我需要克隆主和子實體。我在CodeProject上遇到了這個解決方案,似乎可以完成這項工作,請參閱:http://www.codeproject.com/Tips/474296/Clone-an-Entity-in-Entity-Framework-4。如何將此EF克隆代碼轉換爲使用DBContext而不是EntityObject?
但是我使用EF5和DBContext,而此代碼使用EF4和EntityObject,所以我想知道我需要對它做什麼更改?
的代碼是:
public static T CopyEntity<T>(MyContext ctx, T entity, bool copyKeys = false) where T : EntityObject
{
T clone = ctx.CreateObject<T>();
PropertyInfo[] pis = entity.GetType().GetProperties();
foreach (PropertyInfo pi in pis)
{
EdmScalarPropertyAttribute[] attrs = (EdmScalarPropertyAttribute[])
pi.GetCustomAttributes(typeof(EdmScalarPropertyAttribute), false);
foreach (EdmScalarPropertyAttribute attr in attrs)
{
if (!copyKeys && attr.EntityKeyProperty)
continue;
pi.SetValue(clone, pi.GetValue(entity, null), null);
}
}
return clone;
}
調用代碼:
Customer newCustomer = CopyEntity(myObjectContext, myCustomer, false);
foreach(Order order in myCustomer.Orders)
{
Order newOrder = CopyEntity(myObjectContext, order, true);
newCustomer.Orders.Add(newOrder);
}
我張貼這裏對這個職位的反饋看不活動,我相信這是任何EF專業人士都可以回答的問題。
非常感謝提前。
謝謝你。很有幫助。 – SamJolly