【问题标题】:Linq2Sql Clone an Object C#Linq2Sql 克隆一个对象 C#
【发布时间】:2015-04-25 18:32:49
【问题描述】:
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);

我正在尝试创建一个与旧对象具有相同值的新对象,但我收到此错误消息;

无法添加已存在的实体。

注意:我不想删除旧对象。请帮助我,我已经 google 了它,但找不到任何帮助或解决方案。

【问题讨论】:

    标签: c# asp.net linq linq-to-sql clone


    【解决方案1】:

    您需要创建一个新对象,目前您的新对象也在引用旧对象:

    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);
    

    【讨论】:

    • 我知道这个解决方案,但它太让人头疼了!
    • @WaqarAhmed 你必须这样做,它的引用类型这样就不能满足你的要求
    【解决方案2】:

    如果 AgreementOld 是 DataTable 那么就这样做

    var AgreementNew = AgreementOld.Copy();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-11
      • 1970-01-01
      • 1970-01-01
      • 2020-03-08
      • 2019-02-26
      • 2011-02-04
      • 2011-12-19
      相关资源
      最近更新 更多