实体框架 - 实体拆分

时间:2014-05-02 13:49:35

标签: c# entity-framework entity-framework-5

假设我有以下类结构。当我将它映射到表格时,我会创建四个表格:' Order' OrderId为主键,OrderDate为日期/时间列的表; '的OrderDetail' OrderId是主键,是' Order'的外键。表格('说明'将是' OrderDetail'表格的另一列)。 '地址'使用OrderId作为主键的表和“OrderDetail”的外键#39; table(' Address' table也包含address1和city),最后是' ExtraStuff' OrderId作为主键的表和&OrderDetail的外键。到目前为止一切都很好。

现在提出问题。假设,我想删除'描述'来自OrderDetail类。映射它的最简单方法就是删除'描述'来自&OrderAetail'的列表,但这会使OrderDetail表只有一个OrderId列,这是我不想要的。我如何在我的案例中使用OrderDetail类,以便我不用一列创建OrderDetail表?我想在逻辑上使用OrderDetail,但有'地址'和' ExtraStuff'表使用来自' Order'的OrderId表

public class Order
{
    public int OrderId { get; set; }

    public DateTime OrderDate { get; set; }

    public virtual OrderDetail Detail { get; set; }
}


public class OrderDetail
{    
    public OrderDetail()
    {
        this.Addresses = new HashSet<Address>();
        this.Extra = new HashSet<ExtraInfo>();
    }

    public int OrderId { get; set; }

    public string Description { get; set; }

    public virtual ICollection<Address> Addresses { get; private set; }

    public virtual ICollection<ExtraInfo> Extra { get; private set; }
}

public class Address
{    
    public int OrderId { get; set; }

    public string Address1 { get; set; }

    public string City { get; set; }
}

public class ExtraInfo
{    
    public int OrderId { get; set; }

    public string SomeStuff { get; set; }        
}

1 个答案:

答案 0 :(得分:1)

恕我直言,保持简单。如果您不打算在OrderDetail中拥有任何特定属性并且不想拥有这样的表,请将OrderDetail与Order合并。