2015-02-24 171 views
0
tblAgreement AgreementOld = (from g in TDC.tblAgreements 
          where g.AccountID == ids.accountID && g.AgreementID == AgreementID 
          select g).SingleOrDefault(); 

Guid AgreementIDNew = Guid.NewGuid(); 
var AgreementNew = AgreementOld; 
AgreementNew.AgreementID = AgreementIDNew; 
AgreementNew.StatusChangeDate = DateTime.Now; 
AgreementNew.CreationDate = DateTime.Now; 
AgreementNew.AccountID = ids.accountID; 
AgreementNew.CreatedByID = ids.userID; 
TDC.tblAgreements.InsertOnSubmit(AgreementNew); 

我想创建一个与旧对象具有相同值的新对象,但我收到此错误消息;Linq2Sql克隆一个对象C#

无法添加已存在的实体。

注意:我不想删除旧对象。请帮助我我有谷歌它,但找不到任何帮助或解决方案。

回答

1

您需要创建一个新的对象,目前新对象也reffering到老:

var AgreementNew = new Agreement(); // create a new instance 
AgreementNew.SomeProperty = AgreementOld.SomeProperty; // assign property from old to new 
AgreementNew.AgreementID = AgreementIDNew; // new proerties here 
AgreementNew.StatusChangeDate = DateTime.Now; 
AgreementNew.CreationDate = DateTime.Now; 
AgreementNew.AccountID = ids.accountID; 
AgreementNew.CreatedByID = ids.userID; 
TDC.tblAgreements.InsertOnSubmit(AgreementNew); 
+0

我知道这个解决办法,但其如此头疼! – 2015-02-24 07:59:29

+1

@WaqarAhmed你必须这样做,其参考类型,这样的方式将无法正常工作 – 2015-02-24 09:13:22

0

如果AgreementOld是数据表,然后就去做

var AgreementNew = AgreementOld.Copy();