草庐IT

EF7上下文池

全部标签

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

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

c# - CurrentCulture with async/await,自定义同步上下文

我有一个Web应用程序,我通过async/await使用了很多异步操作。一切正常,但当我创建自定义任务以并行运行多个任务时,我注意到,在此任务中,当前文化在等待后发生了变化。问题似乎是,线程池使用操作系统的文化,这与请求的文化不同,默认同步不会更新文化,即使在任务中更改当前线程的文化。所以我创建了一个自定义同步上下文:publicsealedclassCulturePreservingSynchronizationContext:SynchronizationContext{privateCultureInfoculture;privateCultureInfocultureUI;pu

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

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

c# - 使用 ToList() 和 .AsQueryable() 连接两个不同的数据库上下文有什么区别?

案例1:我在两个上下文中通过ToList()方法加入了两个不同的数据库上下文。案例2:并且还尝试使用ToList()加入第一个Db上下文,然后使用AsQueryable()加入第二个。两者都对我有用。我只想知道这些连接在性能和功能方面的区别。哪一个更好?varusers=(fromusrindbContext.User.AsNoTracking()selectnew{usr.UserId,usr.UserName}).ToList();varlogInfo=(fromlogindbContext1.LogInfo.AsNoTracking()selectnew{log.UserId,l

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# - 如何确定 Dbcontexts 的范围(以防止整个应用程序的单例上下文)

我想知道您如何在EntityFramework中确定Dbcontext的范围,这样您就不会为整个应用程序使用单个Dbcontext。我是EntityFramework的新手并且一直在阅读教程,但他们都使用单个Dbcontext作为示例,因此EF现在对我来说几乎是一个黑盒子。例如我有3个模型:发布用户评论每个模型都相互关联(APost属于User,Comment属于User和Post)。我是否为每个单独创建一个Dbcontext?但这是不正确的,因为它们都是相关的,或者我会为我需要的每个场景创建一个Dbcontext吗?例如,如果我只需要查询Post和Comments而不是用户,那将是一

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

c# - 为什么每个 Dispatcher.BeginInvoke 回调都有一个唯一的同步上下文?

我刚刚注意到,在.NET4.5中,每个Dispatcher.BeginInvoke/InvokeAsync回调都在其自己非常独特的同步上下文(的实例)上执行DispatcherSynchronizationContext).这种变化背后的原因是什么?以下简单的WPF应用说明了这一点:usingSystem;usingSystem.Diagnostics;usingSystem.Threading;usingSystem.Windows;usingSystem.Windows.Threading;namespaceWpfApplication{publicpartialclassMain

c# - EF4 在不先获取实体的情况下更新实体

如何更新一个实体而不必调用它来选择它。如果我为实体提供key,它是否应该不知道在对ObjectContext调用SaveChanges()后进行更新。我目前这样做:varuser=context.Users.Single(u=>u.Id==2);user.Username="user.name";user.Name="ABC123";context.SaveChanges();这行得通,但会强制选择。因为我知道Id,为什么我不能做这样的事情:varuser=newUser();user.Id=2;user.Username="user.name";user.Name="ABC123";

c# - 如何使用 EF6 更新多对多表

我有两个类:publicpartialclassObjectiveDetail{publicObjectiveDetail(){this.SubTopics=newList();}publicintObjectiveDetailId{get;set;}publicintNumber{get;set;}publicstringText{get;set;}publicvirtualICollectionSubTopics{get;set;}}publicpartialclassSubTopic{publicintSubTopicId{get;set;}publicstringName{ge