当前位置: 首页 > 编程语言 > C#

分享_111110

时间:2023-04-11 01:03:16 C#

与EntityFramework6的SqlDependency(异步));我还想启动对这些查询的SQL依赖,以便在数据库中的数据更改时得到通知。我可以像这样使用System.Runtime.Remoting.Messaging.CallContext来做到这一点:);SqlDependency依赖=newSqlDependency();dependency.OnChange+=(sender,e)=>{Console.Write(e.ToString());};System.Runtime.Remoting.Messaging.CallContext.SetData("MS.SqlDependencyCookie",dependency.Id);varlist=awaitcontext.Clients.Where(c=>c.FirstName.Length>0).ToListAsync();}}..它工作正常。但是如果我想在多个查询上使用SqlDependency,那么我就有问题了。如果我有两个像上面的GetData()这样的异步方法,并且同时运行这两个方法,那么只有第一个方法会收到更改通知。我假设这是由于CallContext连续为每个方法设置cookie。如果我等待第一个异步方法完成,然后调用第二个,它们都会按预期获得更改通知。有什么解决办法吗?我对SqlDependency不是很熟悉,但以下内容将允许您的CallContext在调用ToListAsync时(当多个调用正在运行时)具有正确的值。这里是概念证书,https://dotnetfiddle.net/F8FnFe以上是C#学习教程:与EntityFramework6的SqlDependency(异步)分享的全部内容,如果对大家有用,还需要进一步了解C#学习教程,希望大家关注—asyncTask>GetData(){using(ClientsContextcontext=newClientsContext())//DbContext的子类{SqlDependency.Start(context.Database.Connection.ConnectionString);SqlDependency依赖=newSqlDependency();依赖。OnChange+=(sender,e)=>{Console.Write(e.ToString());};任务>task=Task>>.Factory.StartNew(async()=>{System.Runtime.Remoting.Messaging.CallContext.SetData("MS.SqlDependencyCookie",dependency.Id);varlist=awaitcontext.Clients.Where(c=>c.FirstName.Length>0).ToListAsync();}).Unwrap();返回等待任务;}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: