我正在VS2012上开发,以.NET Framework 4.0为目标,使用EF6。
我已经安装了微软的Nuget软件包。
<package id="Microsoft.Bcl" version="1.1.8" targetFramework="net40" />
<package id="Microsoft.Bcl.Async" version="1.0.168" targetFramework="net40" />
<package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="net40" />我想异步地将更改保存到数据库。我发现有Await可用,但我找不到SaveChangesAsync。
使用Framework4.0启用异步操作需要做什么?
(我无法升级到Framework4.5,需要坚持4.0)
发布于 2015-01-02 14:23:21
async函数不包含在.Net 4.0编译的EF程序集中,因此您必须使用调用SaveChanges的Task。
摘自EF的源代码:
#if !NET40
public virtual Task<int> SaveChangesAsync()
...
public virtual Task<int> SaveChangesAsync(CancellationToken cancellationToken)
...
#endif所以您可以创建一个类似于此的方法:
public Task<int> SaveChangesAsync(MyDbContext context)
{
return Task.Factory.StartNew(() => context.SaveChanges());
}我假设您知道DbContext并不是线程安全的,因此您必须确保上下文在同一时间内不用于其他数据库交互。
https://stackoverflow.com/questions/27743444
复制相似问题