【发布时间】:2023-04-01 12:44:01
【问题描述】:
我有以下映射来支持多对多表 (User_Role)
modelBuilder.Entity<Role>()
.HasMany<User>(u => u.users)
.WithMany(r => r.roles)
.Map(m =>
m.MapLeftKey("role_id")
m.MapRightKey("user_id")
m.ToTable("User_Role"));
这非常适用于将多个角色映射到一个用户以及将多个用户映射到一个角色。我遇到的问题是当我需要通过如下实体向表 User_Role 添加新行时:
public class User_Role
{
[Key Column(Order=1)]
public int role_id {get;set;)
[Key Column(Order=1)]
public int user_id {get;set;)
}
每当我尝试按如下方式访问此实体时:
dbContext.User_Role.Add(new User_Role {user_id ....
EF 寻找一个不存在的名为 User_Role1 的表...它在表名中添加了一个“1”。
然后我尝试添加:
[Table("User_Role")]
这会处理添加“1”,但我现在收到此错误:
“已经定义了架构‘dbo’和表‘User_Role’的EntitySet‘RoleUser’。每个EntitySet必须引用一个唯一的架构和表”
我能够确认以下几行一起导致了问题,但我有点需要它们
m.ToTable("User_Role") and public class User_Role..
任何建议都会很棒......我很难过。
【问题讨论】:
标签: orm entity-framework-4 mapping fluent-interface