EF与特定架构的多对多关系

时间:2013-09-15 15:32:38

标签: c# sql entity-framework

我想在DB中为某些实体创建特定的架构。 “Role”和“SystemKey”具有多对多关系,主题都在“ACL”模式中。

public class Role
{
    public long Id { get; set; }
    public string Title { get; set; }

    //Navigation prop
    public virtual ICollection<SystemKey> SystemKeys { get; set; }
}

public class SystemKey
{
    public SystemKey()
    {
        Roles = new HashSet<Role>();
    }

    public long Id { get; set; }
    public string ActionName { get; set; }
    public string ControllerName { get; set; }

    //Navigation prop
    public ICollection<Role> Roles { get; set; }
}

并在“OnModelCreating”中定义:

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Role>().ToTable("Role", "ACL");
        modelBuilder.Entity<SystemKey>().ToTable("SystemKey", "ACL");
    }
}

但是,当生成数据库时,我看到在ACL模式中生成的角色和系统密钥以及在dbo模式中创建的联结表(SystemKeyRole)。 我如何强制SystemKeyRole(联结表)在“ACL”模式中生成?

1 个答案:

答案 0 :(得分:2)

您可以通过添加如下配置来实现:

modelBuilder.Entity<Role>()
    .HasMany(p => p.SystemKeys)
    .WithMany(p => p.Roles)
    .Map(p => p.ToTable("SystemKeyRole", "ACL"));