簡體   English   中英

與單表實體框架asp.net MVC的多個關系

[英]Multiple relationships to single table Entity Framework asp.net MVC

我剛剛開始為我的下一個項目使用Entity Framework,我正在努力解決以下問題。 我有以下ApplicationUser類:

public class ApplicationUser : IdentityUser 
{
    public string Name { get; set; }
    public int CompanyId { get; set; }
    public virtual Company Company { get; set; }
}

我有兩個這個類固有的類:

public class TrainerUser : ApplicationUser  
{
    public virtual ICollection<ClientUser> Clients { get; set; }
}

public class ClientUser : ApplicationUser 
{
    public string TrainerId { get; set; }
    public TrainerUser Trainer { get; set; }
}

公司類看起來像這樣:

public class Company 
{
    public int Id { get; set; }
    public string Name { get; set; }
    public virtual ICollection<TrainerUser> Trainers { get; set; }
    public virtual ICollection<ClientUser> Clients { get; set; }
}

我無法弄清楚我是如何使用流暢的API在ApplicationUsers表中不包含3個不同的companyId列。

目前我有以下流暢的API配置:

modelBuilder.Entity<TrainerUser>().HasRequired(c => c.Company).WithMany(t => t.Trainers).HasForeignKey(c => c.CompanyId);
modelBuilder.Entity<ClientUser>().HasRequired(c => c.Company).WithMany(c => c.Clients).HasForeignKey(c => c.CompanyId);

誰能指出我正確的方向?

嘗試將這些添加到您的代碼中。

modelBuilder.Entity<TrainerUser>().ToTable("TrainerUser");
modelBuilder.Entity<ClientUser>().ToTable("ClientUser");

如果我找對你 您正在嘗試創建表示每個層次結構(TPT)的結構 在鏈接上閱讀更多相關信息。

基本上,當實體框架在實體中遇到繼承時會發生什么。 它默認嘗試創建表是通過使用discriminator列創建所有派生實體的所有屬性集的列。

您要創建的是層次結構中每個類的單獨表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM