C# saveChangesSync()方法不更新数据库

C# saveChangesSync()方法不更新数据库,c#,.net,entity-framework,entity-framework-6,C#,.net,Entity Framework,Entity Framework 6,我有一个具有以下功能的web应用程序: 实体框架6.1.3 Framework.NET4.5.1 我将.NET Framework从版本4.5.1升级到4.6.2 从那以后,“System.Data.Entity”方法的“saveChangesSync()”不再更新我的数据库 我找不到是因为.NET framework软件包还是“SaveChangesAsync()”方法的Entity framework 6.1.3和.NET Framwork 4.6.2之间存在一些兼容性问题。。。我迷路了

我有一个具有以下功能的web应用程序:

  • 实体框架6.1.3
  • Framework.NET4.5.1
我将.NET Framework从版本4.5.1升级到4.6.2

从那以后,“System.Data.Entity”方法的“saveChangesSync()”不再更新我的数据库

我找不到是因为.NET framework软件包还是“SaveChangesAsync()”方法的Entity framework 6.1.3和.NET Framwork 4.6.2之间存在一些兼容性问题。。。我迷路了

以下是一些示例:

服务等级

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;
}
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编排,一切似乎都是正确的。 那么现在发生了什么


提前谢谢你。

我终于发现我做错了什么。 事实上,我使用的是“统一”(verison 5.8.6)。我在上次更新.NET Framework的同时更新了我的Unity软件包

我的UnityConfig.cs是这样制作的:

public static void ConfigureUnityContainer(IUnityContainer container)
{
    // some other resgistration
    container.RegisterType<MyEntities>(new PerResolveLifetimeManager());
}
我对
PerRequestLifetimeManager
的理解是,容器将解析http请求中对象的同一个实例,而
PerResolveLifetimeManager
将标记该类型,以便在构建对象图中重用实例


总之,使用PerRequestLifetimeManager,在不同的http请求中,我们将有不同的解析对象。

可能的重复取决于您为什么通过
//某些作品
注释隐藏。您能告诉我们更新实体的代码部分吗?请尝试启用EF日志记录。您将能够看到正在生成的确切SQL。我更新了我的代码样本。请确保方法
getCatalogeById
返回的实例使用与UoW相同的DbContext。还要检查你没有在上面使用AsNotTracking。
public static void ConfigureUnityContainer(IUnityContainer container)
{
    // some other resgistration
    container.RegisterType<MyEntities>(new PerRequestLifetimeManager());
}