首页 .Net .NET Core 3.0 EF Core使用include外键条件过滤的方法

.NET Core 3.0 EF Core使用include外键条件过滤的方法

1、安装引用Z.EntityFramework.Plus.EFCore

由于目前的EF Core版本还不支持,include方法中进行where条件过滤,好像是EF Core 5.0支持,目前解决办法是使用Z.EntityFramework.Plus.EFCore中IncludeFilter方法实现。

1)使用Nuget界面管理器

搜索"Z.EntityFramework.Plus.EFCore",在列表中找到它,点击"安装"

相关文档VS(Visual Studio)中Nuget的使用

2)使用Package Manager命令安装

PM> Install-Package Z.EntityFramework.Plus.EFCore

3)使用.NET CLI命令安装

> dotnet add TodoApi.csproj package Z.EntityFramework.Plus.EFCore

相关文档https://entityframework-plus.net/ef-core-query-include-filter

2、使用IncludeFilter实现外键的where条件

注意:使用IncludeFilter方法,必须要引用using Z.EntityFramework.Plus;命名空间。 还不能和AsNoTracking方法一起使用,不能和Include方法混用,不能linq语句混用,不能与IncludeOptimized方法混用,多对多关系不支持yet.

// using Z.EntityFramework.Plus; // Don't forget to include this.
var ctx = new EntitiesContext();
// LOAD orders and the first 10 active related entities.
var list = ctx.Orders.IncludeFilter(x => x.Items.Where(y => !y.IsSoftDeleted)
                                               .OrderBy(y => y.Date)
                                               .Take(10))
                     .ToList();
//Include()方法只支持var list = ctx.Orders.IncludeFilter(x => x.Items)加了where也是不起作用。

或者

var q1 = ctx.Orders.Take(10)
var p1 = q1.Select(x => x.OrderItems.Where(y => !y.IsSoftDeleted));

var list = q1.Select(x => new { x, p1 }).ToList().Select(x => x.X);

3、Z.EntityFramework.Plus.EFCore中WhereDynamic支持字符串

原生的where方法中只支持代码表达式,而Z.EntityFramework.Plus.EFCoreWhereDynamic()方法支持字符串,这样代码可以更灵活。示例代码如下:

var list = ctx.WhereDynamic(x => "x > 2").ToList();
var list = ctx.WhereDynamic(x => "x > y", new { y = 2 }).ToList();

var list = ctx.Execute<IEnumerable<int>>("Where(x => x > 2)");
var list3 = ctx.Execute("Where(x => x > y).OrderBy(x => x).ToList()", new { y = 2 });

相关文档:

https://entityframework-plus.net/ef-core-linq-dynamic

.NETcoreMysqlefcore中通过dotnet命令Code First创建生成数据库

efcore(Entity Frameworkcore)中实例化创建DatabaseContext方法及代码

.NETcoreefcore(Entity Frameworkcore)去掉重复数据(distinct)

.NETcore2.1ef(Entity Framework)coreSqlite配置和使用分享

ef(Entity Framework)core和ef(Entity Framework)6区别对比

.NETcoreefcore(Entity Framework) 实现分组查询(group by)

efcore2.0和ef6(Entity Framework 6)中配置实体映射关系

.NETcoreef(Entity Framework)core自动创建数据库

.NETcoreefcore实现left join查询



特别声明:本站部分内容收集于互联网是出于更直观传递信息的目的。该内容版权归原作者所有,并不代表本站赞同其观点和对其真实性负责。如该内容涉及任何第三方合法权利,请及时与824310991@qq.com联系,我们会及时反馈并处理完毕。