EF - 类分为不同的表

时间:2016-12-25 15:46:22

标签: entity-framework

我有一个现有的软件,它有一个单独的类的树表。

usersusers_ausers_b使用相同的主键user_id

如何使用Entity Framework和C# - Code First来模拟这种类型的表,所以我有一个类User,并且这三个表中的所有属性都分配给了这个类?

table: users

users_id int
name nvarchar
....

table: users_a

users_id int
race_id int
......

table: users_b

users_id int
genders_id int
...

我需要一个用户类

User

public int Id { get;set;}
public int GenderId {get;set;}
public virtual Gender Gender {get;set;}
public int RaceId {get;set;}
public virtual Race Race {get;set;}

2 个答案:

答案 0 :(得分:0)

可以使用每个层次结构表来实现此结构。有关详细信息,请参阅Asp.net example

答案 1 :(得分:0)

通过覆盖DbContext类的“OnModelCreating”方法来拆分该类。

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<User>()
        .Map(map =>
        {
            map.Properties(p => new
            {
                p.UserId,
                p.Name
            });
            map.ToTable("users");
        })
        .Map(map =>
        {
            map.Properties(p => new
            {
                p.UserId,
                p.GenderId
            });
            map.ToTable("users_b");
        })
        .Map(map =>
        {
            map.Properties(p => new
            {
                p.UserId,
                p.RaceId
            });
            map.ToTable("users_a");
        });           
    }