将复合poco映射到EF objectcontext实体

时间:2014-12-15 21:07:59

标签: c# entity-framework

我必须从3个独立的表(每个表中有几个字段)生成一个输出到1个输出。我有一个表示该输出的类。数据是从EF 6.1.x ObjectContext的linq查询中提取的(由于我的客户需要的性质,我坚持使用ObjectContext ....)实体(在查询中正确连接的3个类)到新类的列表(列表与LT;&GT)。我填充网格,一切都很好。但是,用户想要编辑网格中的数据,现在我需要推回这些新的更改。

我的问题是:我可以将我的新课程映射回实体字段到字段吗?或者我是否一直在迭代集合并单独更新表格?我以为我可以绘制地图,但我没有遇到任何证实这一点的事情。

1 个答案:

答案 0 :(得分:1)

你能不能使用"代理"图案?

我已经在下面完成了一个2实体+ Wrapper示例伪示例。

EF将" Save" SuperWrapper.DeptProxy和SuperWrapper.EmpProxy。

public partial class DepartmentEFEntity    {
    public virtual Guid? DepartmentUUID { get; set; }

    public virtual string DepartmentName { get; set; }
    public virtual ICollection<EmployeeEFEntity> Employees { get; set; }

}



public partial class EmployeeEFEntity
{

    public virtual Guid? ParentDepartmentUUID { get; set; }

    public virtual Guid? EmployeeUUID { get; set; }

    public virtual DepartmentEFEntity ParentDepartment { get; set; }

    public virtual string SSN { get; set; }
}



public class SuperWrapper
{

    internal DepartmentEFEntity DeptProxy { get; private set; }
    internal EmployeeEFEntity EmpProxy { get; private set; }

    public SuperWrapper(DepartmentEFEntity dept, EmployeeEFEntity emp)
    {
        this.DeptProxy = dept;
        this.EmpProxy = emp;
    }

    public string DepartmentName
    {
        get { return null == this.DeptProxy ? string.Empty : this.DeptProxy.DepartmentName; }
        set { if(null!=this.DeptProxy{this.DeptProxy.DepartmentName =value;}}
    }

    public string EmployeeSSN
    {
        get { return null == this.EmpProxy ? string.Empty : this.EmpProxy.SSN; }
        set { if(null!=this.EmpProxy{this.EmpProxy.SSN =value;}}
    }

}