草庐IT

c# - EF vs SQL 奇怪的慢

在大量多线程的情况下,我遇到了特定EF查询的问题。它通常便宜且快速:Context.MyEntity.Any(se=>se.SameEntity.Field==someValue&&se.AnotherEntity.Field==anotherValue&&se.SimpleField==simpleValue//fewmoresimplepredicateswithfieldsonthemainentity);这编译成一个非常合理的SQL查询:SELECTCASEWHEN(EXISTS(SELECT1AS[C1]FROM(SELECT[Extent1].[Field1]AS[Fiel

c# - SaveChanges 后属性未更新(首先是 EF 数据库)

首先,我想说我阅读了相关帖子(特别是EF4.1SaveChangesnotupdatingnavigationorreferenceproperties、EntityFrameworkCodeFirst-Whycan'tIupdatecomplexpropertiesthisway?和EntityFramework4.1RC(CodeFirst)-Entitynotupdatingoverassociation)。但是,我无法解决我的问题。我对EntityFramework很陌生,所以我想我一定误解了那些帖子的答案。无论如何,如果有人可以帮助我理解,我将非常感激,因为我很困惑。我有两个

c# - .NET Core/EF 6 - 依赖注入(inject)范围

我目前正在使用EF6设置.NETCore应用程序,但在理解如何正确使用各种依赖项注册方法时遇到了一些困难。据我了解:Transient:对象在需要时创建(即每次请求时创建一个新实例)Singleton:在应用程序启动时创建的单个实例,可用于所有后续请求Scoped:在请求期间可用特别是在我的情况下,我设置了一对DbContext(基于CQRS模式)来处理我注册为Scoped的数据库查询/命令:services.AddScoped((_)=>newTestCommandContext(Configuration["Data:TestConnection:ConnectionString"

c# - 在我的应用程序中,EF 4.1 代码优先执行查询比常规 EF 慢 3 倍

我有一个宠物项目(一个简单的论坛应用程序),我用它来测试所有最新的.NET技术,最近我开始玩弄EntityFrameworkCode-First。这个应用程序已经有一个现有的EF解决方案,其中一个EDMX文件映射到一个现有的数据库,我的所有实体都是自动生成的。到目前为止,该解决方案效果很好。注意:请记住,对EF4.1的这一更改纯粹是为了学习。如果你想知道我的需求是什么导致我升级,没有任何需求。我只是想好玩。我复制了该项目并进行了升级,因此我将拥有相同的项目但具有不同的EntityFramework实现。在新项目中,我使用了一个名为EntityFrameworkPowerTools的Vi

c# - 当子项具有身份 key 时,如何使用 EF 将多个子实体添加到对象?

我们正在使用EF5和SQLServer2012以下两个类:publicclassQuestion{publicQuestion(){this.Answers=newList();}publicintQuestionId{get;set;}publicstringTitle{get;set;}publicvirtualICollectionAnswers{get;set;}}publicclassAnswer{publicintAnswerId{get;set;}publicstringText{get;set;}publicintQuestionId{get;set;}publicvi

c# - EF Code-First 中查找表的最佳实践

我正在使用EF做我的第一个项目,我打算采用代码优先模型。我试图找到一些关于处理相当经典的“查找表”场景的指导。我正在处理一个非常典型的情况,我将在其中保留地址数据。所以,我有一个简单的地址DTO...publicclassAddress{publicintId{get;set;}publicvirtualstringStreetAddress1{get;set;}publicvirtualstringStreetAddress2{get;set;}publicvirtualstringCity{get;set;}publicvirtualstringState{get;set;}pub

c# - 如何从 EF 的非异步 SaveChanges 安全地调用异步方法?

我正在使用ASP.NETCore和具有SaveChanges和SaveChangesAsync的EFCore。在保存到数据库之前,在我的DbContext中,我执行了一些审计/日志记录:publicasyncTaskLogAndAuditAsync(){//doasyncstuff}publicoverrideintSaveChanges{/*await*/LogAndAuditAsync();//whatdoIdohere???returnbase.SaveChanges();}publicoverrideasyncTaskSaveChangesAsync{awaitLogAndAu

c# - EF 6.1 ProxyCreationEnabled 和 LazyLoadingEnabled 之间的区别

在您的DbContext中,您可以配置以下两个参数:context.Configuration.ProxyCreationEnabled=true;context.Configuration.LazyLoadingEnabled=true;我的理解是,要启用延迟加载,您必须能够为实体创建代理。换句话说,两个参数都需要设置为true以启用延迟加载。1。为什么这两个参数都存在,为什么可以配置这两个参数?2。以下配置会产生什么效果?//Can'tcreateproxiesbutcanlazyloadcontext.Configuration.ProxyCreationEnabled=fals

c# - 开箱即用地更新 EF 中的子集合真的不可能吗(又名非 hacky 方式)?

假设您的实体中有这些类。publicclassParent{publicintParentID{get;set;}publicvirtualICollectionChildren{get;set;}}publicclassChild{publicintChildID{get;set;}publicintParentID{get;set;}publicvirtualParentParent{get;set;}}并且您有一个用户界面来更新Parent及其Children,这意味着如果用户添加新的Child那么您必须插入,如果用户编辑了一个现有的Child那么你需要更新,如果用户删除了一个C

c# - Linq to Entities EF4

我有一个包含name、desc和users(属于该组)集合的Groups域模型我正在尝试获取特定用户所属的所有组。这是我的LinQ声明:varresults=frompinAuthorizationService.UnitOfWork.Groups.FindAll()where(p.Users!=null&&p.Users.Select(u=>u.Id).Contains(CurrentUser.Id))selectp.Name;当我尝试执行查询时出现以下错误Cannotcompareelementsoftype'System.Collections.Generic.ICollecti