首页
学习
活动
专区
圈层
工具
发布

EF Core 原生 SQL 实战:FromSql、SqlQuery 与对象映射边界

问题不在于“能不能写 SQL”,而在于怎么写得可维护、可观测、还能和 EF Core 的映射体系配合好。这篇文章讲解 FromSql、SqlQuery 的使用边界和对象映射的一些坑。1....所以这篇不是教你“怎么在 EF Core 里执行 SQL”,而是讲“如何把原生 SQL 纳入 EF Core 的工程边界”。2....2.2 SqlQuery:面向轻量读模型和标量结果Database.SqlQuery 更适合“读多写少”的轻量查询:直接映射到 DTO执行标量统计(如 count/sum)它的定位就是查询,不承担实体生命周期管理...模型边界:实体模型和报表 DTO 分离,避免查询模型反向污染领域模型。可观测边界:关键查询用 TagWith 标注业务意图,便于慢 SQL 排障。3....把读模型当实体:查询 DTO 后又尝试走 SaveChanges,语义会混乱。4. 总结在 EF Core 里使用原生 SQL 的关键,不是“写不写 SQL”,而是“把 SQL 放在正确边界”。

26010

EF-Net一种适用于双流SOD的有效检测模型(Pattern Recognition)

论文地址:在公众号「计算机视觉工坊」,后台回复「EF-Net」,即可直接下载。 简介 显著目标检测(SOD)在计算机视觉领域得到了广泛的关注。但面临低质量的深度图,现有模型的检测结果都不是很理想。...为了解决这一问题,该文提出了一种新型多模态增强融合网络(EF-Net),用于有效的RGB-D显性检测。具体来说,首先仅仅利用RGB图像提示映射模块来预测提示映射,编码突出对象的粗略信息。...通过进一步评价RGB-T数据表明,EF-Net是一般多模态显着性检测的有效解决方案。 与其他方法比较的可视化图片: ? 模型: ?...在特征聚合之后,再次使用U-Net来组合和细化{DHi,i=1、2、3、4}来预测最终的显着性映射Sf。 损失函数: 该文利用多监督提升模型的性能,损失函数为交叉熵损失。...EF-Net由三个主要模块组成,包括用于生成提示图的CHMM、用于增强带有颜色提示图的深度图的DEM和用于聚合多模态特征的LAM。

72010
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    EF-Net一种适用于双流SOD的有效检测模型(Pattern Recognition)

    论文地址:在公众号「3D视觉工坊」,后台回复「EF-Net」,即可直接下载。 简介 显著目标检测(SOD)在计算机视觉领域得到了广泛的关注。但面临低质量的深度图,现有模型的检测结果都不是很理想。...为了解决这一问题,该文提出了一种新型多模态增强融合网络(EF-Net),用于有效的RGB-D显性检测。具体来说,首先仅仅利用RGB图像提示映射模块来预测提示映射,编码突出对象的粗略信息。...通过进一步评价RGB-T数据表明,EF-Net是一般多模态显着性检测的有效解决方案。 与其他方法比较的可视化图片: ? 模型: ?...在特征聚合之后,再次使用U-Net来组合和细化{DHi,i=1、2、3、4}来预测最终的显着性映射Sf。 损失函数: 该文利用多监督提升模型的性能,损失函数为交叉熵损失。...EF-Net由三个主要模块组成,包括用于生成提示图的CHMM、用于增强带有颜色提示图的深度图的DEM和用于聚合多模态特征的LAM。

    60820

    EF基础知识小记六(使用Code First建模自引用关系,常用于系统菜单、文件目录等有层级之分的实体)

    日常开发中,经常会碰到一些自引用的实体,比如系统菜单、目录实体,这类实体往往自己引用自己,所以我们必须学会使用Code First来建立这一类的模型....以下是自引用表的数据库关系图: ok,下面开始介绍从零创建一个Code First版的自引用模型. 1、往目标项目中添加EF包,通过NuGet程序包添加 导入相关的程序集. 2、创建自引用实体类...() : base("name=EF6RecipeEntities") { } protected override void...Category>().HasMany(cat => cat.Subcategories).WithOptional(cat => cat.ParentCategory); } } 4、...截至这一步,分析下代码,典型的目录实体,从实体类可以看出该实体拥有单个父类型、子类型集合,这里比较特殊的是,这里的父类型和子类型都是自己,也就是自引用.注意:一个没有付类型的实体,该实体就是整个继承类型的最顶端

    1.4K60

    DTO与值对象和POJO比较

    DTO是一个代表一些没有逻辑的数据的类:DTO通常用于在单个应用程序中的不同应用程序或不同层之间传输数据。您可以将它们视为愚蠢的信息袋,其唯一目的是将此信息提供给收件人。...Value Object是领域模型的完整成员:它符合与实体相同的规则。Value Object和Entity之间的唯一区别是Value Object没有自己的标识。...这意味着具有相同属性集的两个值对象应该被视为相同,而两个实体即使它们的属性匹配也不同。 值对象确实包含逻辑,通常它们不用于在应用程序边界之间传输数据。...另一个非POCO方法的好例子是4.0版之前的Entity Framework。每个EF生成的类都继承自EntityObject基类,因此带来了很多特定于Entity Framework的复杂性。...它取决于它的POCO类型:值对象或实体。此外,POCO可能包含也可能不包含逻辑。这取决于天气与否POCO是DTO。 总结 以下内容总结这个主题: 1、DTO!

    3K20

    LM4LV:用于低级视觉任务的冻结大型语言模型

    引言 大语言模型(LLM)的巨大成功和推广性带来了多模态大型语言模型(MLLM)的新研究趋势。我们想知道 LLM 可以给计算机视觉带来多大的好处,以实现更好的性能并实现真正的智能。...常见的选择是 VQ-GAN,它是 VAE 家族最先进的代表。另一个不太常见的选择是 BEiT,它最初用于图像识别。...需要大量随机初始化来定义用于分类目的的内核,但尚未讨论 LLM 上的多个随机初始化与自回归生成的集成。因此,我们只随机初始化一次LLM并保持架构不变,测试其去噪性能。...为了确保公平比较,MLP 和 Transformer 具有与我们的方法几乎相同数量的可训练参数。用专家模型替换线性层。 我们测试了专家模型在图像去噪和图像旋转方面的性能。...此外,由于 LM4LV 不涉及任何多模态数据,因此通过用自监督的特定领域模块替换 MAE,该框架可以扩展到跨模态数据稀缺的领域。 局限性。 如图 3 所示,LM4LV 无法恢复退化图像中的高频细节。

    92810

    Entity Framework快速入门--直接修改(简要介绍ObjectContext处理机制)

    看一个实例:下图所示项目截图与实体模型图(一个简单的例子) 然后看下面一段代码: static void Main(string[] args) { SchoolDBEntities schoolDB...每个实体做了修改时,EF帮我们把实体放到相应的队列中并修改相应的实体的状态(EntityState),当调用ObjectContext的SaveChanges()方法时,EF根据队列的情况以及EDMX元数据映射的信息生成最终的...当然还有删除的队列、修改的队列这个大家自己看一下就可以了。 (4):EntityState,实体对象的状态。...不推荐方式一: 思路:先从ObjectContext取出实体,然后将前台传过来的DTO属性对应赋值到我们的实体上,然后调用ObjectContext的保证修改方法。...推荐方式二: 思路:无需先查出实体,因为我们知道EF通过ObjectStateManage来控制添加、修改、删除队列以及实体的状态,我们所有可以通过在直接将DTO转化成实体,然后将实体对应的队列中,并且我们手动的将实体的状态处理好

    1.5K30

    使用 freemarker 制作代码生成器

    在开发的过程中发现有大量的重复代码,比如 Controller 和 Service 以及 Mapper 和实体类,后两者都可以使用 Mybatis 自动生成,前两者只能自己写。...他是一个模板语言,模板的特点就是有很多不变的,还有一小部分变的; 观察我们的 controller 层代码,大部分是一样的,变的只是实体类的名字,所以动态的数据可以使用占位符; freemarker 提供了包括占位符在内的多种处理方式...他是介于实体类与 Service 中的一种对象,由于实体类通常与数据库中的字段相关联,所以一般确定之后不容易变化,但是如果今后我们的业务有一个需求需要添加字段,我们就可以使用位于中间的 Dto 对象来做协调...generatorConfig.xml 是 mybatis-generator 的配置文件,这里使用 Dom4j 自动读取了从而获取表名,你也可以不获取,自己手动写。...-- 生成的实体类添加 toString() 方法 --> generator.plugins.ToStringPlugin" />

    3.5K41

    DataSet的灵活,实体类的方便,DTO的效率:SOD框架的数据容器,打造最适合DDD的ORM框架

    所以为了简便,就直接查询出全部属性对应的数据,或者也用EF的Select子句,投影下,但将结果又投影给了另外一个DTO对象或者Entity 对象,这样就使得对象中部分属性为空了,于是又产生了博主的第二个问题...如果这样的DTO对象用在List上且用于分布式环境,那么,这样浪费的网络IO和序列化,凡序列化浪费的CPU,还是比较严重的。...在EF等ORM中,要定义一个字段可空,需要定义成可空类型,比如我们的User类,假设定义成EF的实体类,应该是这样子的: public class EFUserEntity {...4,在分布式系统上使用实体类 4.1,实体类的序列化与反序列化 这里必然绕不开实体类的序列化与反序列化,现在最新的SOD框架已经内置支持,参考下面的代码: //查找姓张的一个用户...幸好,SOD的实体类提供了仅仅获取更改过的数据的方法,请看下面的例子: //序列化之后的属性是否修改的情况测试,下面的实体类,LastName 属性没有被修改 UserEntity user4 =

    3.3K90

    初识ABP vNext(1):开篇计划&基础知识

    首先DDD理论就非常抽象和复杂,要深刻理解它并不容易;其次是ABP内部使用了很多开源组件,比如EF Core,IdentityServer4,Autofac,AutoMapper,Swagger等等,所以也需要对这些组件有所了解...本篇简单介绍一下ABP官方文档上一些重要的关键字,先理解这些关键字,才能更好的进一步学习。 审计(Audit) 审计是用于追踪数据变化的过程。...DDD中的实体通常都是充血模型,充血模型就是实体中不光有属性,还会包含行为(方法),反之DTO,ViewModel就是典型的贫血模型。...仓储(Repository) 仓储用于操作领域对象(实际就是操作数据库),通常会为每个聚合根或不同的实体创建对应的仓储。...数据传输对象(DTO) 通常领域对象不适合直接在应用层与展示层之间传递,比如User中的Passwod字段,这时候就需要用到DTO,DTO和ViewModel类似。

    2.9K31

    初识ABP vNext(1):开篇计划&基础知识

    首先DDD理论就非常抽象和复杂,要深刻理解它并不容易;其次是ABP内部使用了很多开源组件,比如EF Core,IdentityServer4,Autofac,AutoMapper,Swagger等等,所以也需要对这些组件有所了解...本篇简单介绍一下ABP官方文档上一些重要的关键字,先理解这些关键字,才能更好的进一步学习。 审计(Audit) 审计是用于追踪数据变化的过程。...DDD中的实体通常都是充血模型,充血模型就是实体中不光有属性,还会包含行为(方法),反之DTO,ViewModel就是典型的贫血模型。...仓储(Repository) 仓储用于操作领域对象(实际就是操作数据库),通常会为每个聚合根或不同的实体创建对应的仓储。...数据传输对象(DTO) 通常领域对象不适合直接在应用层与展示层之间传递,比如User中的Passwod字段,这时候就需要用到DTO,DTO和ViewModel类似。

    2.3K51

    DDD分层

    User Interface是用户接口层,主要用于处理用户发送的Restful请求和解析用户输入的配置文件等,并将信息传递给Application层的接口 Application层是应用层,负责多进程管理及调度...、多线程管理及调度、多协程调度和维护业务实例的状态模型。...生成的dao类 包结构: repository model 与数据库对应的实体类 repository mapper mybatis的mapper 现在实践落地时,这个模块是个空模块,why?...,直接依赖spring不需要自实现了 exception 异常类 gateway 网关,封装访问外部系统或资源行为的对象 api 外接接口 dto 外接接口dto wechat 外部名称 local pl...防腐层(ACL)放在下游,将上游的消息转化为下游的领域模型 结合generator-assist-dao模块的问题,是否可以扩大ACL,而不仅限于gateway中,像资源库一样,不必完全遵循DDD只抽象

    3.2K20

    .NET 领域驱动设计:用户角色更新如何从应用服务落地到领域实体(代码拆解)

    ">新的角色 Id 集合(会自动去重) /// 操作人 Id,用于记录最后修改人 /// /// 该方法会计算新旧集合的差异...一些有意思的细节 _userRoles 是什么:通常是实体里的一个 List 或 ICollection,EF Core 会追踪它的变化。...这省了一次数据库提交(因为外层的 _unitOfWork.SubmitAsync 虽然会被调用,但 EF Core 的 ChangeTracker 没有检测到任何变更,提交实际是空操作,但显式 return...一些可以讨论的改进点 返回实体 vs 返回 DTO:服务层直接返回 SysUser 实体,如果上层不小心修改了它且没有再次提交,可能引发隐蔽 bug。...最后 代码写得干净,不是因为用了什么花哨的设计模式,而是因为它做对了一件事:把不同职责放在不同的层次里。服务层就干服务层的活,实体层就干实体层的活,谁也不越界。

    23010

    EntityFramework 外键值映射

    如果在 EF OnModelCreating 中配置了实体外键映射,也就是 SQL Server 中的 ForeignKey,那么我们在添加实体的时候,主实体的主键值会自动映射到子实体的外键值,并且这个操作在一个...4、实体框架的界面处理 在界面调整这块,我们还是尽可能保持着的Enterprise Library的Winform界面样式,也就是混合型或者普通Winform的界面效果。...不过由于实体框架里面,实体类避免耦合的原因,我们引入了DTO的概念,并使用了AutoMapper组件进行了Entity与DTO的相互映射,具体介绍可以参考《Entity Framework 实体框架的形成之旅...--数据传输模型DTO和实体模型Entity的分离与联合 》。...在实体框架界面层的查询中,我们也不在使用部分SQL的条件做法了,采用更加安全的基于DTO的LINQ表达式进行封装,最后传递给后台的也就是一个LINQ对象(非传统方式的实体LINQ,那样在分布式处理中会出错

    5.6K50

    从壹开始前后端分离【 .NET Core2.2 +Vue2 】框架之十二 、十三:DTOs(数据传输对象)

    2、先来引入DTO讲解,以及它的原理   在学习EF的时候我们知道了ORM(Object Relational Mapping)映射,是一种对象关系的映射,对象-关系映射(ORM)系统一般以中间件的形式存在...而Automapper是一种实体转换关系的模型,AutoMapper是一个.NET的对象映射工具。主要作用是进行领域对象与模型(DTO)之间的转换、数据库查询结果映射至实体对象。...下边的是基本原理,大家喵一眼就行: Ø 什么是DTO?   数据传输对象(DTO)(DataTransfer Object),是一种设计模式之间传输数据的软件应用系统。...为何不能直接将领域对象用于数据传递?因为领域对象更注重领域,而DTO更注重数据。不仅如此,由于“富领域模型”的特点,这样做会直接将领域对象的行为暴露给表现层。   ...领域模型就是面向对象的,面向对象的一个很重要的点就是:“把事情交给最适合的类去做”,即:“你得在一个个领域类之间跳转,才能找出他们如何交互”。在我们的系统中Model(EF中的实体)就是领域模型对象。

    1.1K20

    EF实体中的修改

    不推荐方式一: 思路:先从ObjectContext取出实体,然后将前台传过来的DTO属性对应赋值到我们的实体上,然后调用ObjectContext的保证修改方法。...推荐方式二: 思路:无需先查出实体,因为我们知道EF通过ObjectStateManage来控制添加、修改、删除队列以及实体的状态,我们所有可以通过在直接将DTO转化成实体,然后将实体对应的队列中,并...且我们手动的将实体的状态处理好,再调用ObjectContext的保证修改方法,这样就避免了先查询后修改,两次数据库连接的问题了。...string[] args) { SchoolDBEntities schoolDB = new SchoolDBEntities(); //假设:网络传一个StudentDTO过来 ,将此DTO...转化成 数据库实体 Student student = new Student(); student.Id = 1;// 假设DTO传过来的值,主键必须存在,不然会报错的 student.Address

    2K10

    Java REST API三层架构项目目录规划

    MyBatis的XML文件置于resources/mapper对应子路径。 数据实体管理规范 自动生成代码隔离 自动生成的PO类存放于po.db....{dbname}.generator,手动扩展类置于po.db.{dbname}.custom。Mapper接口与XML文件同理隔离。...DTO/VO独立分层 传输对象按用途分层:dto.request(入参)、dto.response(出参)、vo(视图对象)。避免与PO混用。...└── mapper ├── order └── payment 关键设计原则 隔离自动生成代码:防止后续生成覆盖人工修改,通过物理目录隔离(generator/custom)。...明确传输对象分层:严格区分PO(持久化对象)、DTO(传输对象)、VO(展示对象)。 此结构支持快速定位代码,适应业务扩展,同时满足微服务“小而自治”的要求。

    63110

    Asp.NET Core2.0 项目实战入门视频课程_完整版

    课程概述 52ABP大学例子程序演示如何使用Entity Framework(EF) Core 2.0 和 Visual Studio 2017 创建一个 ASP.NET Core 2.0 MVC web...制作了代码生成器(ABP Code Generator),辅助与ABP框架以提高开发人员的效率。...章实体类的添加、删除、修改、查询 1、查询详情方法改造及路由说明00:07:03 2、完善详情视图页面00:04:50 3、从github推送代码回vsts实现双向同步00:08:31 4、修改添加学生方法...00:35:14 2、分页和分组功能实现00:35:18 3、统计学生信息00:15:29 4、EF迁移文件生成的两种方式(CLI和PMC)00:17:07 第6章复杂数据类型的实践 1、使用Dto来替代实体做验证...00:10:04 2、完善Student实体的配置关系00:18:18 3、使用Data Annotations来进行关系的配置00:03:11 4、使用FluentApi来进行一对多关系的配置00:05

    3.1K110
    领券