实体Framewok:是否可以复制实体并为其创建别名?

时间:2016-03-08 17:15:29

标签: asp.net entity-framework visual-studio

在我的模型中,我有一个[Customer]表,其自我关联为:

1 [客户]可能有1个[赞助商],赞助商是客户。

enter image description here

在EF 6中,我想知道是否可以将实体客户分成两个独立的实体[客户]和[赞助商],并为它们分配相同的表格?

由于

2 个答案:

答案 0 :(得分:0)

您可以继承实体以使别名考虑此示例:

public class Person
{
    public int ID {get;set;}
    // your shared properties here
}

public class Customer: Person
{
    // additional properties such as
    public virtual Sponsor Sponsor {get;set;} 
}

public class Sponsor : Person
{
    // this could be have own properties or not
}

现在你的DbContext可能是这样的:

public class MyDbContext:DbContext
{
    public IDbSet<Person> Persons{get;set;}
    // optionally you could add child objects
    public IDbSet<Customer> Customers{get;set;}
    public IDbSet<Sponsor> Sponsors{get;set;}
}

由于使用了继承EF,只需为您的实体创建一个表。但是你有3个单独的课程。

答案 1 :(得分:0)

是的,你可以

    public class Customer
    {
        public int ID {get;set;}
        //all your columns goes here
        ///these 2 lines for foreign key mapping except sponsor
        public virtual Customer Sponsor {get;set;} 
        public virtual IList<Customer> CustomerList{get;set;}
    }
在你的DbContext中

public DbSet<Customer> Customers{get;set;}