我想使用 .NET Core MVC 和 Entity Framework 從下拉串列中存盤多個值。我不知道該怎么做。這是我的模型代碼。
public class Project
{
[Key]
public int Id { get; set; }
[Required]
public string Title { get; set; }
public string? Description { get; set; }
public List<int> SkillsID { get; set; }
[ValidateNever]
public List<Skill> skills { get; set; }
}
uj5u.com熱心網友回復:
從這里開始 ( https://docs.microsoft.com/en-us/ef/core/modeling/relationships?tabs=fluent-api,fluent-api-simple-key,simple-key ) 了解 EF 中的關系。在您的情況下,您可能希望在專案和技能之間建立多對多關系。這假設您將擁有一個技能串列,其中每個專案將自己與 0、1 或許多這些技能相關聯。在這種情況下,您將擁有以下類:
public class Project
{
// ... project properties.
public virtual ICollection<Skill> Skills { get; protected set; } = new List<Skill>();
}
public class Skill
{
// ... skill properties.
}
映射后,您告訴 EF 該專案.HasMany(x => x.Skills).WithMany(),因為我們可能不需要每個技能物體上的專案集合。最后一步是告訴 EF 如何關聯這兩個物體。在多對多關系中,這涉及一個連接表,例如 ProjectSkills 表:
[tbl:ProjectSkills]
- PK,FK - ProjectId
- PK,FK - SkillId
您不跟蹤物體中的 FK 串列。從資料庫的角度考慮它。將表與 FK 關聯在一起時,您在單行中沒有 FK 陣列或此類。您使用連接表。
表的 P??K 是專案 ID 和技能 ID 之間的組合,其中每一個都是回傳到相應表的 FK。EF 可以按約定創建此表,或者如果您想微調命名,您可以手動配置它。
如果您想跟蹤有關關系的更多詳細資訊,例如跟蹤 CreatedDate 等,則需要將關系映射為如下所示的物體:
public class Project
{
// ... project properties.
public virtual ICollection<ProjectSkill> ProjectSkills { get; protected set; } = new List<ProjectSkill>();
}
public class Skill
{
// ... skill properties.
}
public class ProjectSkill
{
[Key, Column(Order = 0)]
public int ProjectId { get; set; }
[Key, Column(Order = 1)]
public int SkillId { get; set; }
public DateTime CreatedDateTime { get; set; }
// .. Other details about the relationship.
[ForeignKey("ProjectId")]
public virtual Project Project { get; set; }
[ForeignKey("SkillId")]
public virtual Skill Skill { get; set; }
}
您可能會遇到使用這些連接物體的 EF Core 示例,因為在早期版本的 EF Core(2、3.1)中,所有多對多關系都需要這樣做。
對于技能專門屬于專案的一對多,則將 ProjectID 放入技能表中。Project 物體將具有相同的技能集合,但映射將是:.HasMany(x => x.Skills).WithOne()其中 Skill 表將包含一個 ProjectID 以將其自身與給定專案相關聯。EF 可以將此關系表示為 Project 具有集合且 Skill 不公開對 Project 的參考的單向關系,或者可以將 Project 參考添加到 Skill 中的雙向關系。( .HasMany(x => x.Skills).WithOne(x => x.Project))
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/486772.html
標籤:sql服务器 asp.net-mvc 实体框架 asp.net 核心
上一篇:在具有多個專案(API/服務/資料等)的解決方案中撰寫SignalR服務的最佳方法是什么?
下一篇:查找字典物件中存在的一些值
