【发布时间】:2011-08-24 08:45:39
【问题描述】:
我有一个 EF4.1 类 X,我想复制它以及它的所有子记录。 X.Y 和 X.Y.Z
现在如果我执行以下操作,它会返回错误。
属性“X.ID”是对象的关键信息的一部分,不能修改。
public void CopyX(long ID)
{
var c = db.Xs.Include("Y").Include("W").Include("Y.Z").SingleOrDefault(x => x.ID == ID);
if (c != null)
{
c.ID = 0;
c.Title = "Copy Of " + c.Title;
for (var m = 0; m < c.Ys.Count; m++)
{
c.Ys[m].ID = 0;
c.Ys[m].XID=0-m;
for (var p = 0; p < c.Ys[m].Zs.Count; p++)
{
c.Ys[m].Zs[p].XID = 0 - m;
c.Ys[m].Zs[p].ID = 0 - p;
}
}
for (var i = 0; i < c.Ws.Count; i++)
{
c.Ws[i].ID = 0 - i;
c.Ws[i].XID = 0;
}
db.Entry<Content>(c).State = System.Data.EntityState.Added;
db.SaveChanges();
}
}
或者是否有其他方法可以复制实体对象。
注意:每个 W,X,Y,Z 都有多个属性。
【问题讨论】:
-
一旁 - 你不需要
.Include("Y")和.Include("Y.Z")。第二个Include将同时包含 Y 和 Z - 如果您考虑一下,它必须包含。
标签: c# entity-framework