0
我正在構建一個.Net Core Web應用程序,以將舊的Access ADP/ADE前端替換爲項目管理SQL Server數據庫。但是,原始數據庫的構建者並未設置大量的外鍵關係,而是傾向於在SQL視圖中完成所有操作。我希望通過這個應用程序來解決這個問題。在.Net Core/EF Core中設置多個相同類的外鍵
我想確保我的頭部環繞設置外鍵,當他們是相同的類類型。例如,我有以下課程。
Project.cs
using System;
using System.Collections.Generic;
namespace ProjectLogic.Models
{
public class Project
{
public int Id { get; set; };
public string Name { get; set; }
public int? PmEmployeeId { get; set; }
public int? CadEmployeeId { get; set; }
public int? SalesRepEmployeeId { get; set; }
...
}
}
Employee.cs
using System;
using System.Collections.Generic;
namespace ProjectLogic.Models
{
public class Employee
{
public int Id { get; set; }
public string Name { get; set; }
public string Title { get; set; }
...
}
}
我會在項目級的結束鍵這個樣子?
public Employee PmEmployee { get; set; }
public Employee CadEmployee { get; set; }
public Employee SalesRepEmployee { get; set; }
隨着我的DbContext類Employee類
public ICollection<Project> Projects { get; set; }
和模型構建相應的聲明
modelBuilder.Entity<Project>(entity =>
{
// Fluent API for column properties
...
entity.HasOne(d => d.PmEmployee)
.WithMany(p => p.Projects)
.HasForeignKey(d => d.PmEmployeeId)
.OnDelete(DeleteBehavior.SetNull)
.HasConstraintName("FK_Project_Employee_PM");
entity.HasOne(d => d.CadEmployee)
.WithMany(p => p.Projects)
.HasForeignKey(d => d.CadEmployeeId)
.OnDelete(DeleteBehavior.SetNull)
.HasConstraintName("FK_Project_Employee_CAD");
entity.HasOne(d => d.SalesRepEmployee)
.WithMany(p => p.Projects)
.HasForeignKey(d => d.SalesRepEmployeeId)
.OnDelete(DeleteBehavior.SetNull)
.HasConstraintName("FK_Project_Employee_SALES");
});
我想我最大的顧慮/問題是Employee類如何處理多個與項目類的關係。我需要像public ICollection<Project> PmProjects { get; set; }
那樣分開處理嗎?