我需要更新EF记录,方法是我有EF对象和另一个我想用来更新数据的新对象。但我不确定如何将数据从新对象复制到现有对象。
请帮助。 这是我的代码:
public int PostHomeLead(string _lead)
{
try
{
int result = 0;
Lead lead = new Lead();
lead = new JavaScriptSerializer().Deserialize<Lead>(_lead);
//check if lead exist with same session id, if so update it other wise add new.
Lead existingLead = new Lead();
existingLead = db2.HomeLoanCustRepo.GetByID(lead.Lead_id);
if (existingLead == null)
{
db2.HomeLoanCustRepo.Insert(lead);
db2.Save();
result = 1;
}
else
{
db2.HomeLoanCustRepo.Update(lead);
db2.Save();
result = 1;
}
return result;
}
catch(Exception ex)
{
throw ex;
}
}
答案 0 :(得分:1)
手动映射属性:
existingLead.Foo = deserializedLead.Foo;
existingLead.Bar = deserializedLead.Bar;
existingLead.Baz = deserializedLead.Baz;
或使用执行此操作的库,如AutoMapper。
至于你的评论,creating a deep copy就是你的目标。请注意,如果您不确认可以更新哪些属性,则允许overposting or mass assignment。在使用克隆或映射时,您需要Attach()
克隆的对象,因为它与GetByID()
返回的对象不同,因此实体框架的更改跟踪器赢了&#39 ;认识它。