0

我有桌子parkpay.Userparkpay.Role. EF Code First 会自动生成第三个表,将两者链接成多对多关系,但它会生成dbo.UserRole. 我如何让它成为“parkpay.UserRole”表?

4

1 回答 1

0

使用 EntityTypeConfiguration<> 配置多对多映射。

public class User
{
    public long Id { get; set; }
    public string UserName { get; set; }
    public string Password { get; set; }
    public virtual ICollection<Role> Roles { get; set; }
}

public class Role
{
    public long Id { get; set; }
    public string Name { get; set; }
    public virtual ICollection<User> Users { get; set; }
}

public class UserMapping : EntityTypeConfiguration<User>
{
    public UserMapping()
    {
        ToTable("User", "parkpay");
        HasKey(e => e.Id).Property(e => e.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
        HasMany(e => e.Roles).WithMany(e => e.Users).Map(m => m.ToTable("UserRole", "parkpay").MapLeftKey("RoleId").MapRightKey("UserId"));
    }
}

public class RoleMapping : EntityTypeConfiguration<Role>
{
    public RoleMapping()
    {
        ToTable("Role", "parkpay");
        HasKey(e => e.Id).Property(e => e.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
    }
}

public class DatabaseContext : DbContext
{
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Configurations.Add(new UserMapping());
        modelBuilder.Configurations.Add(new RoleMapping());
        base.OnModelCreating(modelBuilder);
    }
}
于 2013-05-25T07:34:10.407 回答