首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

EF Core关系配置

IQueryable复用 IQueryable是一个待查询逻辑,因此它是可以被重复使用 IQueryable books = ctx.Books.Where(b => b.Price...执行实体相关查询原生SQL语句 如果要执行原生SQL是一个查询语句,并且查询结果也能对应一个实体,就可以调用对应实体DbSetFromSqlInterpolated()方法来执行一个查询SQL...只能单表查询,不能使用Join语句进行关联查询。但是可以查询后面使用Include()来进行关联数据获取。...) 更新到数据库; “已删除”实体,SaveChanges() 从数据库删除; 查看实体状态: 使用DbContextEntry()方法来获得实体EF Core跟踪信息对象EntityEntry...DbContext会根据跟踪实体状态,SaveChanges()时候,根据实体状态不同,生成Update、Delete、Insert等SQL语句,来把内存实体变化更新到数据库

6910

.NET面试题系列 - LINQ to SQL与IQueryable

LINQ to SQL可以将查询表达式转换为SQL语句,然后在数据库执行。相比LINQ to Object,则是将查询表达式直接转化为Enumerable一系列方法,最终C#内部执行。...将查询表达式转换为SQL语句并不保证一定可以成功。 IQueryable 理解IQueryable最简单方式就是,把它看作一个查询,执行时候,将会生成结果序列。...LINQ to SQLlambda表达式首先被转化为表达式树,然后再转换为SQL语句。 我们试图实现一个可以将where这个lambda表达式翻译为SQL语句查询提供器。...拥有连接数据库,简单执行sql语句(不需要返回值,用于DDL或delete语句)和通过执行Sql语句,返回若干实体功能(用于select语句)。...首先IQueryable是解析一棵树,IEnumerable则是使用委托。前者手动实现上面已经讲解了(最基本情况),而后者完全可以用泛型委托来实现。

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

使用ORM框架,必须迁就数据库设计

--由于PDF.NET框架实际商业产品应用,所以维护一直进行,功能扩展和Bug修复一直进行; (3)ORM框架众多,lz产品优势在哪里?定位简单还是功能强大?...--框架主要特点是具有iBatisSQL-MAP功能和支持.NET 2.0面向对象方式查询表达式OQL,定位是简单易用,使用 SQL-MAP时候,只需要写好SQL语句,有代码工具自动生成DAL...--框架提供了从数据库来生成实体工具,但也允许先ModelFirst、CodeFirst,我许多示例(比如示例操作OQL部分)都是直接创建实体类, 没有设计数据表,如果采用手工方式,可以自定义要持久化哪些属性以及如何持久化...不太认同“不是设计者”就无法肯定框架是“轻量、简单”这个观点,“轻量”可以从软件文件大小、对环境、系统依赖程度等方面来认定; “简单”可以从实际使用过程体会出来,已经有不少用过或者看过框架朋友肯定说...比如自定义函数和SQL类型等等 --PDF.NET实体类本着从简原则,实体类没有引入复杂关系概念,遇到这些复杂查询,可以使用SQL-MAP功能,它可以将DataReader结果读入实体

2.1K90

金三银四面试:C#.NET面试题中高级篇5-Linq和EF

10.除了EF,列举出知道ORM框架? 11.在哪些类型额项目中会选择EF? 为什么? 12.请说明EF映射实体对象几种状态? 1.EF(Entity Framework)是什么?...提升从数据库拿数据速度,可以参考以下几种方法: 1).在数据库定义合适索引和键 2).只获得需要列(使用ViewModel或者改进查询)和行(使用IQueryable)...大部分LINQ语句最终结果第一个元素被访问时候(即在foreach调用MoveNext方法)才真正开始运算,这个特点称为延迟执行。...LINQ to SQL可以将查询表达式转换为SQL语句,然后在数据库执行。相比LINQ to Object,则是将查询表达式直接转化为Enumerable一系列方法,最终C#内部执行。...将查询表达式转换为SQL语句并不保证一定可以成功。 10.除了EF,列举出知道ORM框架

4K30

脏数据

开源地址:https://github.com/NewLifeX/X (求star, 729+) 什么是脏数据 XCode,每次执行实体类更新entity.Update时,都希望只更新修改过字段,...一方面,减少数据库压力以及通信流量; 另一方面,多线程同时更新同一行数据不同字段,未加锁情况下,避免脏写。 ? IsDirty和Dirtys,这是XCode脏数据,常常出现在Valid 。...脏数据是生成Update语句核心,不脏字段不会出现在update set 之中,从而实现部分字段更新。...最终生成update set语句,只包含带有脏数据字段。最后where部分,则由主键组成。 使用脏数据 脏数据最常见于数据验证Valid可以用来判断某个属性否则曾经被修改过 ?...除了可用于实体类Valid,还可以用于实体过滤器EntityModule.Valid。

76330

字符串插值_让我们帮助QueryProvider处理插值字符串

可以使用以下方法:    Format with object arguments 带有对象参数格式 Format with object[] argument 使用object []参数格式化 Something...’s offload all cases into this data structure:   由于我们只有3个条件,因此可以使用if来处理它们,但是由于我们假设将来需要扩展此方法,因此让我们将所有情况转移到此数据结构...使用FilterPredicate,我们可以确定要处理三种情况哪一种。...请注意转换IQueryable 具有IQueryable方法qu.Provider.CreateQuery(result) 。 它广泛用于C#(请看IEnumerable 接口!)...,它来自使用一个要获取IQueryable / IEnumerable类处理所有通用接口并使用通用接口方法进行处理需要。

74030

一个库帮你快速实现EF Core数据仓储模式

前言 EF Core是我们.NET日常开发中比较常用ORM框架,今天大姚要分享内容是如何使用EF Core Generic Repository通用仓储库来快速实现EF Core数据仓储模式。...通过使用这个库,开发人员可以更轻松地管理数据访问层,提高开发效率。 值得推荐.NET ORM框架 对于还不知道怎么选择.NET ORM框架同学可以看下面这两篇文章,希望对会有所帮助。...16个值得推荐.NET ORM框架 .NET ORM框架使用情况统计 数据仓储(Repository)介绍 Repository(仓储)是DDD(领域驱动设计)经典思想,可以归纳为介于实际业务层(...提供了带有数据库事务支持通用存储库。 拥有所有必需方法,以任何你想要方式查询数据,而无需从存储库获取IQueryable。...支持选择是否要跟踪查询实体/实体。 支持确实需要时重置EF Core DbContext状态。 具有完整单元测试支持。 支持分页、原始SQL查询支持复杂类型和原始类型。

14710

.NET深入解析LINQ框架(六:LINQ执行表达式)

之前我一直以为VS只负责将LINQ表达式翻译成等价扩展方法调用,后来发现VS为了满足我们在前期无法确定对象条件情况下进行Where字句拼接,允许我们在编写LINQ语句时候带有逻辑判断表达式在里面...,这个功能对我们进行多条件组合查询时相当方便,不需要在进行IF、ELSE多个判断,只需要顺其自然LINQ第一个表达式中进行判断就行了。...由此可以得出一个结论,LINQ语句是会被执行和解析两个动作,还没有进入到提供程序时已经可以看出LINQ是可以附带一些执行逻辑在里面的,而不是最终SQL执行逻辑。...表达式处理可以分为常量表达式和动态变量表达式,常量表达式VS编译时候就可以直接计算表达式是否是true、false。...所有说如果多条件组合查询之间是and关系可以直接使用Linq,如果是or或者是or与and一起,那么可以使用上面这种链式查询方法。

1.3K10

Entity Framework CodeFirst尝试

这样设计好处在于我们可以针对概念模型进行所有数据操作而不必关系数据存储关系,使我们可以更加自然采用面向对象方式进行面向数据应用程序开发。...Code First 简单使用演示 第一步:还是添加一个控制台应用程序,然后在此项目中添加两个简单实体类 using System; using System.Collections.Generic;...因此接下来我们需要给这个应用安装EntityFramework包,因为到目前为止我们并没有引入EF框架相关任何内容,我们需要引入EF相关程序集。但是我们有更好选择那就是NuGet。...我们可以App配置文件里添加一个数据库链接字符串 <?xml version="1.0" encoding="utf-8"?...同时打开Sql Server 发现也有了刚刚在配置文件配置那个数据库

64330

ASP.NET MVC5实现具有服务器端过滤、排序和分页GridView

我们工程都是用基本功能创建。现在,我们开始创建数据库上下文类,这个类将会被Data Access实体框架使用。...如果完成了包安装,将会在工程中看到以下引用界面: ? 配置数据库连接字符串 写控制器代码之前,我们需要为实体框架配置连接字符串,以便在操作数据库时来连接数据库。...配置文件会发现下面配置节点中连接字符串,需要在节点中根据系统来修改连接字符串。...我们正在获取 Assets 引用,以便能够链接到实体框架请求数据,我们可以通过 Count()函数来获取数据集表数据数目,这个数据将会传递到 DataTablesResponse 构造函数,成为行为方法最后一行...现在 build 这个工程并在浏览运行,就可以查看带有服务器端过滤、分页和排序 GridView 了。

5.4K80

.NET面试题系列 - LINQ:性能

所以使用ORM时,如果它用到了IQueryable,请将你查询也写成表达式而不是委托形式。...代码,选择了前100个score(一条SQL),然后对所有score进行遍历,从表Student获得Name值(100条SQL)。 解决方法也文章给出了,就是将两个表连到一起。...只获得需要列(使用ViewModel或者改进查询)和行(使用IQueryable) 尽可能使用一条查询而不是多条 只为了展示数据,而不进行后续修改时,可以使用AsNoTracking。...EF6,我们还可以使用这样方法: ? 注意:编译器不一定能够将你LINQ语句翻译为SQL,例如字符串IndexOf方法就不被支持。...可以通过IEnumerable上调用AsQueryExpr方法来令LinqOptimizer优化LINQ语句使用Run方法执行: ?

2.5K40

初探领域驱动设计(2)RepositoryDDD应用

正如我们大家一直讨论那样,EF,DBContext它本身就已经是一个Unit Of Work模式,因为上面说功能它都有。那我们有必要自己再给它包上一层?...我们要做并不多,因为DbContext.SaveChanges它本身就是有事务,所以我们只需要创建一个带有SaveChanges接口就可以了。...那IRepository那些更新类方法放在领域层是不是就多余了呢? 毕竟我们现在只需要用到查询功能。我们可以单独建一个IQuery接口给领域层使用。...(Mock)以便我们测试中使用   如果项目属于短期项目,或者说不用考虑更换数据访问层,那么可以忽略第一和第二个优点。...而第三个优点,借助于一些测试框架我们也可以实现,所以如果不想用Repository,那就不用,前提条件是所做项目允许这样做,并且也能够找到好替代方案来弥补Repository优势。

1.3K60

如何运用领域驱动设计 - 存储库

不要为了显示而使用存储库 工作单元 持久化困难 总结 概述 在上一篇文章,我们已经了解过领域驱动设计中一个很核心对象-聚合。...它不能为实体服务?...通过返回一个IQueryable对象,甚至可以将业务查询逻辑直接放到应用层,这样想怎么操作就怎么操作。 请注意!!!这非常危险!!!! 您可能会问了:“我平时所接触框架或者仓储不都是这样写?...EFCore,为我们提供了Fluent API方式来配置模型,该方式可以很好让领域对象保持干净。假如您没有使用EFCore,另外ORM框架也一定会为您提供类似于这样配置方法。...不要为了显示而使用存储库 很多场景我们可能需要提供一个丰富界面,或者一个完整报表。比如在一个界面上显示了某个聚合一个实体信息,又或者报表中提供了各个实体和值对象汇总和特定信息。

94530

一步一步学Linq to sql(六):探究特性

延迟执行 IQueryable query = from c in North.Customers select c; 这样查询句法不会导致语句立即执行,它仅仅是一个描述,对应一个SQL。...仅仅在需要使用时候才会执行语句.比如: IQueryable query = from c in North.Customers select c; foreach...对于这样需求,建议使用ToList()等方法把查询结果先进行保存,然后再对集合进行查询: IEnumerable customers = (from...由于这个特性,我们使用存储过程作为实体更新方法时候就要当心了,存储过程书写错误,即使提交了修改也很可能导致缓存数据和数据库数据不一致,引起不必要麻烦。...由于新DataContext还没有获取实体,我们只能通过附加方式更新数据。 首先把Customer表主键字段加上IsVersion标识: ?

49020

DDD理论学习系列(12)-- 仓储

当然,某种程度上,这也的确是仓储所带来利好。仓储要点是保持领域模型和技术持久化框架独立性,这样领域模型可以隔离来自底层持久化技术影响。...换句话说,ORM负责将代码定义对象和关系映射到数据库表结构中去,并在进行数据访问时再将表数据映射到代码定义对象,借助ORM我们不需要去手动写SQL语句可以完成数据增删改查。...ORM不是仓储,但是仓储可以使用ORM来持久化领域对象状态。 ? 如果领域模型与数据模型类似,ORM可以直接映射领域模型到数据存储,否则,则需要对ORM进行额外映射配置。 4....比如,实体我们一般使用IsActive或IsDeleted属性来表示软删除,而一旦实体某条数据被删除,那么UI基本不会再显示这条数据,那对于实体查询都需要包含类似Where(c=> c.IsActive...对于没有复杂业务逻辑简单限界上下文,直接使用持久化框架即可。 使用UOW进行事务管理。UOW负责跟踪对象状态,仓储UOW协调事务中进行实际持久化工作。

1.8K70

.NET深入解析LINQ框架(四:IQueryable、IQueryProvider接口详解)

我更觉得这些文章属于使用实际项目中用到时候稍微查一下能用起来就行了,而重要是能搞懂其原理才是我们长期所追求,因为这些原理在任何一个应用框架设计中都是相通可以帮助我们举一反三学习,...如果我们使用扩展方法那么只能是扩展IEnumerable对象,这没有问题。我们可以很方便LINQ表达式调用我们自己扩展方法,让自己方法跟着一起链式查询。...顺便在扩展点使用思路,目前MVVM模式其实也可以将V很多界面逻辑封装在扩展方法来减少VM耦合度和复杂度。包括现在MVC都可以适当采用扩展方法来达到更为便利使用模式。...我们在编写Linq语句时候一般都是 where什么然后select 什么,至少连续两个扩展方法映射调用,但是朋友知道它内部是如何处理?...IQueryable继承自IEnumerable接口,也就是可以被foreach语法调用,但是GetEnumerator方法才会去执行提供程序代码。

1.4K11

.NET EF Core(Entity Framework Core)

4、EF一些类命名空间以及一些方法名字EF Core稍有不同。 5、EF不再做新特性增加。...程序包管理器控制台”执行命令:Add-Migration InitialCreate,会自动项目的Migrations文件夹中生成操作数据库C#代码。...OutputDir”参数形式来同一个项目中为不同数据库生成不同迁移脚本 小结: 1、使用迁移脚本,可以对当前连接数据库执行编号更高迁移,这个操作叫做“向上迁移”(Up),也可以执行把数据库回退到旧迁移...Data Annotation配置方式 把配置以特性(Annotation)形式标注实体 [Table("t_books")] public class Book { public...总结:如果有一个确定字段要被进行并发控制,那么使用IsConcurrencyToken()把这个字段设置为并发令牌即可;如果无法确定一个唯一并发令牌列,那么就可以引入一个额外属性设置为并发令牌,并且每次更新数据时候

9711

高级增删改

** IEntityPersistenceXCode内部有一个默认实现,用户可以自定义后注册到对象容器ObjectContainer。...Insert 生成标准Insert Into语句,根据设置决定是否使用参数化。(参数化设置) ?...Update 最精彩部分,莫过于脏数据(后面将有专门文章介绍)。 XCode,修改数据标准流程是,先查出来,修改属性后保存。此时生成update set语句,只包含修改过字段。 ?...最终生成update set语句,只包含带有脏数据字段。最后where部分,则由主键组成。 Delete 就简单多了,只取了其中主键字段,拼接where部分。 ?...脏数据是生成Update语句核心,不脏字段不会出现在update set 之中,实现部分字段更新,后续有专门章节讲解。

1.5K10

【愚公系列】2023年02月 .NETC#知识点-使用控制台手搭webapi框架

文章目录 前言 一、使用控制台手搭webapi框架 1.配置文件 2.控制台配置 二、EFCore框架DBSet配置详解 1.实体统一配置 2.实体继承统一接口 3.获取程序集所有类 4.批量注入模型类到...EF 三、EFCore框架表配置详解 1.配置基类, 2.实体表统一配置 3.DBContext应用配置 四、仓储配置 1.仓储基类 2.仓储实现类 五、Autofac配置 1.注入DBContext...本文涉及知识量巨大主要有如下: EFCore Autofac Serilog Swagger 非常多底层知识 一、使用控制台手搭webapi框架 1.配置文件 appsettings.Development.json...EF实体,接口可以设置一个泛型,来泛化我们主键类型,因为可能存在不同主键类型也不一样。...DBContext作为DBSets,再也不需要一个个写DBSet了,可以用过DbContext.Set()获取用户DBSet。

1.5K10

Svelte使用心得:个人项目中表现不错,但在大型企业项目中仍有待观察

如果是会把 Svelte 用到大型公开项目中? 以下是这篇“吐槽”原文,由 InfoQ 翻译。 过去一个月来,我开发了一款个人 RSS 阅读器。...Svelte 承认用户可能需要向树结构上方发送数据,并提供一个使用 Web 平台原语 API。我必须给它点个赞! 响应式语句 我发现 Svelte 响应式语句有点让人摸不着头脑。...保留在核心中倒不是坏事,只是很遗憾文档那种优雅用例根本就没法稳定实现。...Svelte 提供一种优雅方式,可以带有 标签组件中使用CSS。那么,为什么不在CSS实现过渡和动画? 也许我只是没有找到真正能用上这些API用例,确实。...但在找到合适用例之前,我两袖清风是要质疑为什么非得把这些复杂API塞进Svelte核心。 总结 好了,这就是我结合实际使用整理 Svelte 体会!

20720
领券