相关疑难解决方法(0)

实体框架5深度复制/克隆实体

我正在使用Entity Framework 5(DBContext),我正在尝试找到深度复制实体的最佳方法(即复制实体和所有相关对象),然后将新实体保存在数据库中.我怎样才能做到这一点?我已经研究过使用扩展方法,CloneHelper但我不确定它是否适用DBContext.

dbcontext entity-framework-5

69
推荐指数
2
解决办法
4万
查看次数

实体框架重复对象和所有子属性

示例结构

public class Page
{
    public int PageId { get; set; }
    public string Prop1 { get; set; }
    public string Prop2 { get; set; }
    public virtual List<Section> Sections { get; set; }
}

public class Section
{
    public int SectionId { get; set; }
    public int PageId { get; set; }
    public virtual Page Page { get; set; }
    public virtual List<Heading> Headings { get; set; }
}

public class Heading
{
    public int HeadingId { get; set; …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework

20
推荐指数
1
解决办法
2万
查看次数

.NET反射:如何获取在分部类上定义的属性

我使用.NET实体框架.我想将属性从一个EntityObject复制到另一个EntityObject.但System.Type.GetProperties()似乎不返回在分部类上定义的属性.

码:

在Visual Studio生成的XXX.edmx/XXX.Designer.cs中,我有类MyTable:

public partial class MyTable: EntityObject{..}
Run Code Online (Sandbox Code Playgroud)

我想为MyTable类添加一些属性,所以我添加文件XXX.Manual.cs:

public partial class MyTable: EntityObject{
    public string myProp{get;set;}
}
Run Code Online (Sandbox Code Playgroud)

myTableObj.GetType().GetProperties()不包含myProp !!!

如何使用反射获取myProp?

[编辑]我想评论Alex回答,但不知道为什么代码部分没有格式化.

是的,这很奇怪.我使用此代码将实体中的属性复制到另一个obj:

public static void CopyTo(this EntityObject Entity, EntityObject another){
    var Type = Entity.GetType();
    foreach (var Property in Type.GetProperties()){
        ...
        Property.SetValue(another, Property.GetValue(Entity, null), null);
    }
}
//in some other place:
myTableObj.CopyTo(anotherTableObj);
Run Code Online (Sandbox Code Playgroud)

其中myTableObj和anotherTableObj的类型为MyTable.

当调试到CopyTo方法时,VS显示实体和另一个是MyTable类型,我可以看到Entity.myProp,另一个.myProp

但foreach语句中的Property var根本不会循环到myProp属性!

[编辑]抱歉.上面的代码(CopyTo方法)是来自diamandiev的另一个问题的答案的副本

但他的代码是错误的:"break"语句必须替换为"continue":D

.net c# linq reflection entity-framework

4
推荐指数
1
解决办法
7143
查看次数

使用序列化在实体框架中的两个ObjectContexts之间复制实体

前言

我知道这可能已经被认为是一个疯狂的问题,但我正在寻找有关如何继续将所有数据(即所有实体和关系)从一个新创建的支持复制到另一个商店的最受过教育的建议和PROVEN建议.请参阅实体框架中的"克隆"EntityConnections和ObjectContexts以了解我是如何设置它的.ObjectContextObjectContext


介绍

我已经看到了关于Entity Framework的克隆数据,但是:

  1. 我正在寻找整个辣酱玉米饼馅,即整个对象图:所有实体和关系.稍后,我会选择对象图的哪些部分进行更精细的选择

  2. 根据我下面的更新,我没有使序列化工作,但仅限于特殊情况.我觉得它真的是一个不那么复杂的任务,但它却出人意料地具有挑战性.我肯定需要一些有关如何使其工作的见解.


步骤1

好的,这是我到目前为止所尝试的.

我知道当我使用Detach/ Attachpower duo时,关系是kaput- 实际上想要保留整个对象图.

因此,我在考虑使用以下MergeOption.NoTracking选项加载根实体:

var serializer = new DataContractSerializer(typeof(Root));

var query = (ObjectQuery<Root>) sourceContext.Roots
    .Include(d => d.Children.Select(c => c.MoreChildren.Select(r => r.EvenMoreChildren)))
    .Include(d => d.Children.Select(c => c.MoreChildren.Select(r => r.MoreAndMoreChildren)))
    .Include(d => d.Children.Select(c => c.MoreChildren.Select(r => r.Shizzle)));

foreach (var d in query.Execute(MergeOption.NoTracking)) {
    //sourceContext.Detach(d); // not needed
    Print(d);
    using …
Run Code Online (Sandbox Code Playgroud)

.net c# serialization entity-framework xml-serialization

3
推荐指数
1
解决办法
3228
查看次数