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; }
那样分开处理吗?