我有以下架构:
这些表参与多对多关系(UserRole)。我首先使用实体框架代码与映射类来定义数据库表。所以,在我的User Table的映射类中,我有以下内容:
this.HasMany(u => u.Roles)
.WithMany()
.Map(m =>
{
m.MapLeftKey(new string[] { "CustomerID", "UserID" });
m.MapRightKey(new string[] {"CustomerID", "RoleID"});
m.ToTable("UserRoles");
}
);
实体框架因此消息失败: "在模型生成期间检测到一个或多个验证错误: CustomerID:Name:类型中的每个属性名称必须是唯一的。物业名称' CustomerID'已定义。 UserRole:EntityType:EntitySet' UserRole'基于类型' UserRole'没有定义键。
是否可以告诉Code First我的" UserRole"的主键。是UserRoleId?
问题是当Entity Framework尝试创建UserRole表时,它会使用MapLeftKey和MapRightKey的所有列来创建具有所有这些列的PrimaryKey的UserRole。
有什么建议吗?
答案 0 :(得分:1)
您需要为类似于数据库的类建模,为什么不简单地添加关联表?我嘲笑你的数据库,只要你对所有表进行建模就没有问题。
自己测试,首先使用现有数据库中的代码创建一个EF项目.edmx,我认为答案很明显。