2016-12-25 13 views
1

私は、単一クラスのツリーテーブルを持つ既存のソフトウェアを持っています。EFクラスは異なるテーブルに分割されます

users,users_aおよびusers_bと同じプライマリキーuser_idです。

Entity FrameworkとC# - Code Firstでこのような種類のテーブルをモデル化するにはどうすればよいでしょうか?Userというクラスがあり、3つのテーブルのすべてのプロパティがこのクラスに割り当てられていますか?

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

関連する問題