【发布时间】:2017-04-04 12:20:08
【问题描述】:
我想定义学生只能拥有一个最喜欢的课程的关系。我希望它在 DB 中看起来像这样:
STUDENT
ID
Name
FavoriteCourseID
COURSE
ID
Name
如何通过实体框架实现这一点?我宁愿仅通过属性来指定它。我试过了:
public class Student
{
public int ID { get; set; }
public string Name { get; set; }
public Course FavoriteCourse { get; set; }
public int? FavoriteCourseID { get; set; }
}
public class Class
{
public int ID { get; set; }
public string Name { get; set; }
}
这给了我这个数据库模型:
STUDENT
ID
Name
FavoriteCourseID
COURSE
ID
Name
StudentID // how to remove this?
请注意,可能有几个学生有相同的最喜欢的课程,因此这是不可接受的解决方案。
另一个问题:这是什么类型的关系? (1:1 / 1:N ?)
【问题讨论】:
-
首先 - 如果您有课程,不清楚为什么需要和 ID。第二 - 一个学生只能有 0 或 1 个班级,一个班级可以由任意数量的学生选择 - 所以这里应该是 0..1 到 0..N
-
这是一对多。而且我没有从您的模型中获得
Course表中的StudentID(假设Class是Course),所以显然发布的模型不完整。 -
@IvanStoev 是的,我发布的模型不完整。实体之间也存在多对多关系。我认为问题出在
FavoriteCourse关系的定义上。但事实证明,问题在于,Entity 框架没有 recognize the relation correctly。 -
@chriemmy 这就是我的想法。所以根据你的评论,我假设你已经解决了这个问题:)
-
@IvanStoev 是的,我做到了。谢谢:)
标签: c# entity-framework relationship