[英]Entity Framework Database First many-to-many
我從數據庫中創建了一個Entity Framework模型。 我有多對多的關系: User
- UserRole
- Role
。
EF創建UserRole
實體UserRoles
導航屬性在User
實體和Role
的實體,但我寧願有Roles
的User
和Users
的Role
。 這是否可以通過模型設計師設計? 如何手動配置中間表的多對多關系?
如果UserRole表包含除User和Role表的外鍵之外的列,則EF通常會創建中間模型。
因此,如果UserRoles表中只有2列,則用戶和角色表的FK(甚至不是代理鍵),EF都可以根據需要創建模型。 (沒有任何中間模型)因此,這是一種方法,可以自動生成所需的行為。 表中只有2列。
但是如果你在這個表中有其他非鍵列(數據),那么EF正在做的是正確的。 你需要中間實體。
如果您沒有任何非鍵列,不想再修改數據庫,並且不需要在模型中使用此中間表,則可以手動修改OnModelCreating,以指定Many-to - 很多並隱藏中間表。
以下是所有步驟:
例如在User類中,
public virtual ICollection<Role> Roles { get; set; }
並在User構造函數中
this.Roles = new HashSet<Role>();
// on the OnModelCreating method, add this snippet
modelBuilder.Entity<User>().HasMany<Role>(u => u.Roles)
.WithMany(r => r.Users)
.Map(ru =>
{
ru.MapLeftKey("UserId");
ru.MapRightKey("RoleId");
ru.ToTable("UserRole");
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.