【问题标题】:Entity Framework deep clone/copy of an entity实体框架深度克隆/复制实体
【发布时间】:2019-08-20 16:02:29
【问题描述】:

我想深度克隆,然后像这样保存新的新实体,但是应该更改 PropertyInfo 上的外键 PropertyId 以引用新创建的属性 - 有没有方便的方法来实现这一点?

报告的重复问题没有解决我的问题,它回答了如何深度克隆实体,而不是如何更新关联实体上的 FK。

var originalEntity = Context.Property.Include("PropertyInfo")
                        .AsNoTracking()
                        .FirstOrDefault(e => e.Id == 1);


 Context.Properties.Add(originalEntity);

【问题讨论】:

  • @SaniSinghHuttunen 这不是建议帖子的副本,帖子不回答更改关联实体上的 FK。
  • @J.Doe 您可能需要单独执行此操作,克隆Property,调用SaveChanges 以生成新实体的PropertyId,然后克隆PropertyInfo,为其分配新的PropertyIdSaveChanges 再次。
  • @J.Doe:看看this answer,这似乎正是您所要求的。
  • @J.Doe 添加了答案

标签: c# entity-framework model-view-controller


【解决方案1】:

删除主 ID

var originalEntity = Context.Property.Include("PropertyInfo")
                        .AsNoTracking()
                        .FirstOrDefault(e => e.Id == 1);


originalEntity.Id = 0;
//either create propertyinfo or assign propertyinfo
originalEntity.PropertyInfo = createdPropertyInfo || Context.PropertyInfo.First(x => x.Id == idOfFKPropertyInfo);

 Context.Properties.Add(originalEntity);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-12
    • 1970-01-01
    • 2014-06-22
    • 2016-03-17
    • 2019-02-27
    • 1970-01-01
    • 2020-01-09
    相关资源
    最近更新 更多