2013-06-13 102 views
0

從我在網上看到的例子以及在編程實體框架CodeFirst書中,當您在兩個類上都有一個集合時,EF會創建一個具有兩個主鍵的映射表。 但是,我怎麼能添加一些額外的領域到這張桌子?例如,我有以下實體和上下文Howto配置Code First Entity Framework多對多映射表?

public class User 
{ 
    [Key] 
    public Guid Id { get; set; } 
    public String Name { get; set; } 
    public virtual ICollection<Role> Roles { get; set; } 
} 

public class Role 
{ 
    [Key] 
    public Guid Id { get; set; } 
    public String Name { get; set; } 
    public virtual ICollection<User> Users { get; set; } 
} 

class MyContext : DbContext 
{ 
    public MyContext (string connString) 
     : base(connString) 
    { 
    } 

    public DbSet<User> Users { get; set; } 
    public DbSet<Role> Roles { get; set; } 
} 

訪問此背景下將產生具有3個表創建數據庫:用戶,角色和的UserRole - 許多一對多映射表有兩個GUID字段。

我想添加一些額外的字段到這個表 - 日期時間AssignmentDate。 如果我添加新的實體

public class UserRoles 
{ 
    [Key] 
    public Guid User_Id { get; set; } 
    [Key] 
    public Guid Role_Id { get; set; } 
    public DateTime AssignmentDate { get; set; } 
} 

class MyContext : DbContext 
{ 
    public MyContext (string connString) 
     : base(connString) 
    { 
    } 

    public DbSet<User> Users { get; set; } 
    public DbSet<Role> Roles { get; set; } 
    public DbSet<UserRoles> UserRoles { get; set; } 
} 

結果是在數據庫中添加一個附加表。 但我想修改自動創建的表。 我該怎麼做?

Thx。

回答

0

必須使用單獨的類UserRoles,但在UserRole類中將關係更改爲使用IList<UserRole>而不是直接引用另一個類。

您不能配置默認的多對多表,因爲它總是隻有兩個主鍵列自動生成。

+0

Thx。它爲我工作 – bairog

相關問題