【发布时间】:2018-06-08 14:11:45
【问题描述】:
我有一个 web 应用程序:
- 实体框架6.1.3
- 框架 .NET 4.5.1
我将 .NET Framework 从版本 4.5.1 升级到 4.6.2。
从那以后,“System.Data.Entity”方法的“SaveChangesAsync()”不再更新我的数据库。
我找不到是因为 .NET 框架包还是 Entity Framework 6.1.3 和 .NET Framwork 4.6.2 之间的“SaveChangesAsync()”方法的一些兼容性问题...我迷路了!
这里有一些示例:
服务类
public async Task<MyActionResponseModel> UpdateSomething(Catalogue catalogue)
{
if (catalogue== null) throw new ArgumentNullException("catalogue is null");
var response = new ActionAddResponse();
var catalogueToUpdate = await _catalogueRepository.GetCatalogueById(catalogue.Id);
var myDate = new DateTime();
if (catalogue.EndDate != null)
{
myDate = catalogue.EndDate.Value;
myDate = myDate.Date.AddHours(23).AddMinutes(59);
}
catalogueToUpdate.Year = catalogue.Year;
catalogueToUpdate.StartDate = catalogue.StartDate;
catalogueToUpdate.EndDate = catalogue.EndDate!= null ? myDate : catalogue.EndDate;
catalogueToUpdate.Tax = catalogue.Tax;
catalogueToUpdate.Online = Convert.ToBoolean(catalogue.Online);
catalogueToUpdate.RefNote = catalogue.RefNote;
await _unitOfWork.SaveAsync();
response.Success = true;
response.Message = string.Format("Catalogue has been update");
return response;
}
UnitOfWork 类
public class UnitOfWork:IUnitOfWork
{
public async Task SaveAsync()
{
await _context.SaveChangesAsync(); // System.Data.Entity
}
}
package.config
<packages>
<package id="EntityFramework" version="6.1.3" targetFramework="net462" />
<package id="Microsoft.AspNet.WebApi.Client" version="5.2.6" targetFramework="net451" />
<package id="Microsoft.AspNet.WebApi.Core" version="5.2.6" targetFramework="net451" />
<package id="Newtonsoft.Json" version="10.0.1" targetFramework="net451" />
</packages>
我已经检查了我的 async/await 编排,一切似乎都是正确的。 那么那里发生了什么?
提前谢谢你。
【问题讨论】:
-
这很大程度上取决于您为什么要通过
// some works评论隐藏。你能告诉我们更新实体的代码部分吗? -
尝试启用 EF 日志记录。您将能够看到正在生成的确切 SQL。
-
我更新了我的代码示例
-
确保
GetCatalogueById方法返回的实例使用与您的 UoW 相同的 DbContext。还要检查你没有在上面使用 AsNotTracking。
标签: c# .net entity-framework entity-framework-6