2016-12-25 65 views
1

我有一個現有的軟件具有單個類的樹表。使用相同的主鍵user_idEF - 類拆分成不同的表

我該如何使用實體框架和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;} 
+0

尋找*實體分裂*。 –

回答

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"); 
     });   
    } 
0

該結構可以通過使用每層次結構表來實現。有關詳細信息,請參閱Asp.net example

+0

我有1個用戶類型的樹表中的屬性。我沒有不同類型的用戶。 – David