在LINQ中更改交叉引用表的名称

时间:2017-02-16 20:13:08

标签: c# entity-framework linq linq-to-sql

我有两个彼此具有多对多关系的表,UserRole_LKP。在User,我有:

public virtual ICollection<Role_LKP> Roles { get; set; }

Role_LKP,我有:

public virtual ICollection<User> Users { get; set; }

在数据库中我有User_Role_XREF但是LINQ尝试访问dbo.UserRole_LKP。我无法更改此表的名称;是否有可能告诉LINQ XREF表的名称是什么而不为User_Role_XREF创建实体?

1 个答案:

答案 0 :(得分:0)

我能够从a marginally related question中解决这个问题。根据这段代码,我认为你不太可能通过数据注释来做到这一点,这样会更清晰,但你可以通过以下方式编辑上下文以达到预期的效果:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilding.Entity<User>()
        .HasMany(r => r.Roles)
        .WithMany(u => u.Users)
        .Map(ru =>
        {
            ru.ToTable("User_Role_XREF", "dbo");
            ru.MapLeftKey("User_ID");
            ru.MapRightKey("Role_ID");
        });
}