C# 更新实体框架核心中的记录

C# 更新实体框架核心中的记录,c#,entity-framework,asp.net-core,.net-core,entity-framework-core,C#,Entity Framework,Asp.net Core,.net Core,Entity Framework Core,我从数据库中已有一条记录,我已使用实体框架检索该记录: MyDataObject myExistingObject= _dbContext.data .Where(s => s.Id == myId).FirstOrDefaultAsync(); 在外部,我收到另一个MyDataObject newDataObjectForSameRow,其中包含myExistingObject的更新信息-除了主键之外的所有字段,该字段在newDataObjectForSameRow中最初

我从数据库中已有一条记录,我已使用实体框架检索该记录:

 MyDataObject myExistingObject= _dbContext.data
   .Where(s => s.Id == myId).FirstOrDefaultAsync();   
在外部,我收到另一个
MyDataObject newDataObjectForSameRow
,其中包含myExistingObject的更新信息-除了主键之外的所有字段,该字段在newDataObjectForSameRow中最初设置为0

如何指示Entity Framework“将当前有myExistingObject的行替换为newDataObjectForSameRow,但保留相同的主键”

尝试使用以下代码:

newDataObjectForSameRow.Id = myId;
MyDataObject myExistingObject = _dbContext.data.Where(s => s.Id == myId).FirstOrDefaultAsync();
_dbContext.Entry(myExistingObject).CurrentValues.SetValues(newDataObjectForSameRow);
_dbContext.SaveChanges();
请尝试使用以下代码:

newDataObjectForSameRow.Id = myId;
MyDataObject myExistingObject = _dbContext.data.Where(s => s.Id == myId).FirstOrDefaultAsync();
_dbContext.Entry(myExistingObject).CurrentValues.SetValues(newDataObjectForSameRow);
_dbContext.SaveChanges();

对myExistingObject进行更改。。然后,
\u dbContext.Save()
@Jawad但是我可以以某种方式将实体框架重新附加到全新的对象上吗?您不应该同时跟踪同一实体的两个实例。其中一个对象是您的DTO,然后您需要将属性从A映射到B(您可以使用automapper),或者您不应该首先实例化第二个对象。如果您提供一些代码,我们可以提供更好的帮助。请更改myExistingObject。。然后,
\u dbContext.Save()
@Jawad但是我可以以某种方式将实体框架重新附加到全新的对象上吗?您不应该同时跟踪同一实体的两个实例。其中一个对象是您的DTO,然后您需要将属性从A映射到B(您可以使用automapper),或者您不应该首先实例化第二个对象。如果您提供一些代码,我们可以提供更好的帮助。