C# 将一个对象数据复制到另一个对象?
我需要更新EF记录,在方法中我有EF对象和另一个新的objct,我想用它来更新数据。但我不知道如何将数据从新对象复制到现有对象 请帮忙。 这是我的密码:C# 将一个对象数据复制到另一个对象?,c#,asp.net,.net,entity-framework,C#,Asp.net,.net,Entity Framework,我需要更新EF记录,在方法中我有EF对象和另一个新的objct,我想用它来更新数据。但我不知道如何将数据从新对象复制到现有对象 请帮忙。 这是我的密码: public int PostHomeLead(string _lead) { try { int result = 0; Lead lead = new Lead(); lead = new JavaScriptSerializer().
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;
}
}
public int-PostHomeLead(字符串\u-lead)
{
尝试
{
int结果=0;
铅铅=新铅();
lead=新的JavaScriptSerializer()。反序列化(_lead);
//检查是否存在具有相同会话id的lead,如果存在,请以其他方式更新它并添加新的会话id。
Lead existingLead=新Lead();
existingLead=db2.HomeLoanCustRepo.GetByID(lead.lead\u id);
如果(existingLead==null)
{
db2.HomeLoanCustRepo.Insert(lead);
db2.Save();
结果=1;
}
其他的
{
db2.HomeLoanCustRepo.Update(lead);
db2.Save();
结果=1;
}
返回结果;
}
捕获(例外情况除外)
{
掷骰子;
}
}
手动映射属性:
existingLead.Foo = deserializedLead.Foo;
existingLead.Bar = deserializedLead.Bar;
existingLead.Baz = deserializedLead.Baz;
或者使用这样的库,比如AutoMapper
至于你的评论,这似乎是你想要的。注意:当您不验证哪些属性可能会被更新时,这允许。在使用克隆或映射时,需要删除克隆的对象,因为它与
GetByID()
返回的对象不同,因此实体框架的更改跟踪器不会识别它。您的代码有什么具体问题?@Servy我问的是如何将一个对象数据复制到另一个对象。是否可以使用linq或lambda或任何现成的.net类/库?@user576510请参见编辑。谢谢,我使用的是Attach()但它会抛出另一个对象使用主键的错误。请帮助我什么是解决方案。解决方案是搜索网站和本网站,查找您收到的实际错误,并应用您从那里读到的知识。对不起,我不知道。最后一个提示:您的错误是由于首先调用GetByID()
,将该实体拉入更改跟踪器,并使用相同的上下文尝试保存另一个具有相同ID的实体。您需要使该GetByID()
查询。AsNoTracking()
。