从我在网上和编程实体框架 CodeFirst 书中看到的示例中,当您在两个类上都有一个集合时,EF 将创建一个具有两个主键的映射表。但是我怎样才能在这个表中添加一些额外的字段呢?例如,我有以下实体和上下文
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 个表的数据库:用户、角色和用户角色 - 具有两个 Guid 字段的多对多映射表。
我想在这个表中添加一些额外的字段 - DateTime 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; }
}
结果是数据库中多了一张表。但我想修改自动创建的表。我怎样才能做到这一点?
谢谢。