我正在努力理解EF(使用EF6)。我想把代码放在第一条路线上,因为这似乎是趋势。我想要做的是弄清楚如何对EF模型中的多个连接表进行建模。
我的主要实体是员工和学校。一名工作人员可以在多个角色(计算机,一年级,历史,监护人等)的多个学校工作。
一个例子:老师鲍勃琼斯在杜鲁门小学的林肯小学和阿尔法科学教授计算机。
从数据库表设计中,我可能会有以下表: - 工作人员 - 学校 - StaffRole - 具有不同角色的查找表 - SchoolStaffRole - 加入员工,学校,& StaffRole
但是,我不太确定我的EF型号会是什么样子。我从以下开始,但显然没有正确的关系。什么是有效的方法?是否需要一个SchoolStaffRole课程以及那些在职员和学校模型中引用的内容?
class School
{
int ID{get;}
virtual ICollection<Staff> Staff{get;set;}
}
class Staff : Member
{
int ID{get;}
virtual ICollection<School> Schools{get;set;}
virtual ICollection<SchoolRole> Roles{get;set;}
}
答案 0 :(得分:0)
如果你想先学习代码,我找到的最快的方法就是让EF为你生成代码第一个代码..然后探索生成的代码。将实体数据模型添加到项目中时,首先从数据库中选择代码。
答案 1 :(得分:0)
如果可以将您尝试映射的SQL表添加到您的问题中,那将非常有用
尝试尽可能避免继承,Staff :Member
不会很有趣
无论如何都要试一试
public class Staff : Member
{
public int ID{get;set;}
}
public class School
{
public int ID{get;set;}
}
public class SchoolStaff
{
public int ID{get;set;}
[ForeignKey("School")]
public int SchoolID {get;set;}
[ForeignKey("SchoolID")]
public virtual School School {get;set;}
[ForeignKey("Staff")]
public int StaffID {get;set;}
[ForeignKey("StaffID")]
public virtual Staff Staff {get;set;}
virtual ICollection<SchoolStaffRole> Roles{get;set;}
}
public class SchoolStaffRole
{
public int ID{get;set;}
[ForeignKey("SchoolStaff")]
public int SchoolStaffID {get;set;}
[ForeignKey("SchoolStaffID")]
public virtual SchoolStaff SchoolStaff {get;set;}
[ForeignKey("SchoolRole")]
public int SchoolRoleID {get;set;}
[ForeignKey("SchoolRoleID")]
public virtual SchoolRole SchoolRole {get;set;}
}