草庐IT

c# - Entity Framework 中多个 "Include"-s 的最佳实践是什么?

假设我们在数据模型中有四个实体:Categories、Books、Authors和BookPages。还假设Categories-Books、Books-Authors和Books-BookPages关系是一对多的。如果从数据库中检索类别实体实例——包括“Books”、“Books.BookPages”和“Books.Authors”——这将成为一个严重的性能问题。此外,不包括它们将导致“对象引用未设置为对象的实例”异常。使用多个Include方法调用的最佳实践是什么?编写单个方法GetCategoryById并将所有项目包含在其中(性能问题)编写单个方法GetCategoryById

c# - 在 Entity Framework 中使用 include 语句时选择特定列

当我需要分层(父子)关系时,我通常在我的EF查询中使用Include语句。例子:DbContext.Customers.Include("Projects");这很好,但是Customers和Projects实体总是会带回所有列。我知道下面的查询将返回父表中的特定列,但我也试图仅返回子表中的特定列。如果我在Projects上使用intellisense,它显然是一个集合,不会提供特定的属性供选择。fromcinCustomersletProjects=c.Projects.Where(p=>p.Notes!=null)whereProjects.Any()selectnew{c.Use

c# - T4 模板错误 : loading the include file ef. utility.cs.ttinclude 返回了 null 或空字符串

我已经覆盖了Controller生成T4模板(ControllerWithContext.tt),如here所述.我想利用在POCO模型生成器T4模板中使用的EF.utility.CS.ttinclude中的代码帮助实用程序。因此,我将以下行从我的Model.tt复制到我的ControllerWithContext.tt。但是,当我尝试添加Controller时,我收到了错误消息Loadingtheincludefile'EF.utility.CS.ttinclude'returnedanulloremptystring根据MSDNdocumentation,这个错误是因为包含的文件是

c# - LINQ To Entities Include + Where 方法

我有NxN表,想象一下:User(id,...)地址(id,...)UserAddresses包含用户和地址的外键。据我所知,EntityFramework用户创建的实体包含一个UserAddresses集合。Address包含UserAddresses的集合,一个特定的UserAddress包含对User和一个Address的引用。现在我想通过linq进行下一个查询。对于特定的用户ID,仅获取启用标志设置为true的userAddresses。对于特定的用户ID,userAddresses可以包含多个条目,但仅为该特定用户设置一个。我可以做的查询是:context.User.Incl

c# - 包含路径表达式必须引用 type.in 预加载中定义的导航属性

我尝试像这样包含匿名类型:除了CompanyTitle,PeriodTypeName之外,我还想要所有incomelist属性varincomeList=ctx.IncomeLists.Include(i=>new{CompanyTitle=i.CompanyId.ToString()+"/"+i.Company.CompanyName,PeriodTypeName=i.ListPeriods.Select(lp=>lp.PeriodType.PeriodTypeName)}).ToList()我的模型部分是这样的:但我得到以下异常:TheIncludepathexpressionmu

c# - EntityFramework 渴望加载所有导航属性

我将Repository模式与DI和IoC结合使用。我在我的存储库中创建了一个函数:TEagerGetById(Guidid,stringinclude)whereT:class{return_dbContext.Set().Include(include).Find(id);}这将立即在我的实体中加载一个导航属性。但是如果我的实体看起来像这样:publicclassBlog:PrimaryKey{publicAuthorAuthor{get;set;}publicICollectionPosts{get;set;}}我如何为Author和Posts获取预加载?我真的必须这样做吗:_d

c# - Entity Framework 中的条件包含()

这个问题在这里已经有了答案:EF:Includewithwhereclause[duplicate](5个答案)关闭2年前。我已经看到了一些类似问题的答案,但是我似乎无法弄清楚如何将答案应用到我的问题中。varallposts=_context.Posts.Include(p=>p.Comments).Include(aa=>aa.Attachments).Include(a=>a.PostAuthor).Where(t=>t.PostAuthor.Id==postAuthorId).ToList();附件可以由作者(作者类型)或贡献者(类型贡献者)上传。我想要做的,只是获取附件所有者

c# - Entity Framework 核心 .Include() 问题

一直在尝试使用efcore并遇到include语句的问题。对于这段代码,我得到了2家公司,这是我所期望的。publicIEnumerableGetAllCompanies(HsDbContextdb){varc=db.Company;returnc;}返回[{"id":1,"companyName":"new","admins":null,"employees":null,"courses":null},{"id":2,"companyName":"TestCompany","admins":null,"employees":null,"courses":null}]如您所见,有2家公

c# - 为什么 Entity Framework 需要 30 秒来加载记录,而生成的查询只需要 1/2 秒?

下面的executeTime第一次是30秒,下次执行同一组代码时是25秒。在SQLProfiler中观察时,我立即看到一个登录,然后它就在那里停留了大约30秒。然后,只要运行select语句,应用程序就会完成ToList命令。当我从ManagementStudio运行生成的查询时,数据库查询只需要大约400毫秒。它返回14行和350列。看起来将数据库结果转换为实体所花费的时间非常短,以至于不明显。那么在进行数据库调用之前的30秒内发生了什么?如果EntityFramework这么慢,我们不可能使用它。有没有我做错了什么或者我可以改变什么来显着加快速度?更新:好吧,如果我使用编译查询,第

c# - 是否可以在 Entity Framework Core 中创建基于字符串的 Include 替代方案?

在API上我需要动态包含,但EFCore不支持基于字符串的包含。因此,我创建了一个映射器,它将字符串映射到添加到列表中的lambda表达式,如下所示:List>expressions=newList>();考虑以下特定类型:publicclassEFContext{publicDbSetP1s{get;set;}publicDbSetP2s{get;set;}publicDbSetP3s{get;set;}}publicclassP1{publicP2P2{get;set;}publicP3P3{get;set;}}publicclassP2{publicP3P3{get;set;}}