C# 克隆/复制对象集及其实体的正确方法是什么?

C# 克隆/复制对象集及其实体的正确方法是什么?,c#,entity-framework,clone,objectset,C#,Entity Framework,Clone,Objectset,我不熟悉实体框架,有以下问题: 我从ObjectContext中获得一个对象列表,用于填充网格。网格允许用户修改和选择绑定的对象。完成后,我将所选对象添加到另一个父对象。问题在于,更改特定对象的特性时,也会更改具有相同选定子对象的其他父对象中的特性。因此,ObjectSet每次都返回对相同对象的引用 我通过手动克隆ObjectSet中的对象解决了我的问题,如下所示: public List<mblDataItem> GetSupportDataItems() { var it

我不熟悉实体框架,有以下问题:

我从ObjectContext中获得一个对象列表,用于填充网格。网格允许用户修改和选择绑定的对象。完成后,我将所选对象添加到另一个父对象。问题在于,更改特定对象的特性时,也会更改具有相同选定子对象的其他父对象中的特性。因此,ObjectSet每次都返回对相同对象的引用

我通过手动克隆ObjectSet中的对象解决了我的问题,如下所示:

public List<mblDataItem> GetSupportDataItems()
{
    var items= (from e in RepEntities.jblDatItemDatTypes
             where e.mblDataType.dtDsc == "Support"
             select e.mblDataItem).OrderBy(p => p.diDsc).ToList();
    mblDataItem di;
    List<mblDataItem> diItems = new List<mblDataItem>();
    foreach (var item in items)
    {
        di = new mblDataItem();
        di.diID = item.diID;
        di.diDsc = item.diDsc;
        di.diSQL = item.diSQL;
        di.Influence = item.Influence;
        di.Comment = item.Comment;
        di.PrimValue = item.PrimValue;
        di.CompValue = item.CompValue;
        diItems.Add(di);
    }
    return diItems; 
}
克隆/复制对象集的正确方法是什么?此外,按照我的方式,我将无法使用导航属性获取相关实体。更新:
好的,所以我试着按照Schwarzie2478的解释和建议去做。这不适用于我,因为我需要克隆多个对象。我需要的是拥有多个mblDataItems集合,这些集合的属性可以彼此独立设置,但仍然具有相同的EntityKey,以便正确地进行插入。我还注意到我的第一个解决方案是有缺陷的,因为当我调用SaveChanges时,它会插入额外的mblDataItems,然后在联接表中使用新插入的ID,而不是现有的mblDataItem ID。我做错了什么

你所有的实体都可以系列化吗?我以前使用过序列化来克隆对象。我不确定这是否是最好的解决方案,但它涉及的代码较少,在您更改实体时可能会中断。@Schwarzie2478:的可能副本是这样的:public static T Clonethis T source{var dcs=new System.Runtime.Serialization.DataContractSerializerTypeSoft;使用var ms=new System.IO.MemoryStream{dcs.WriteObjectms,source;ms.Seek0,System.IO.SeekOrigin.Begin;return Tdcs.ReadObjectms;}}?我从