我有一个像这样的现有数据库架构(无法改变它......)。我需要做一个EF映射
Student
表:
ID Name CourseID
------------------------
1 Name1 100023
2 Name2 100023
3 Name3 100024
4 Name4 NULL
Course
表:
ID CourseID CourseName
--------------------------
1 100023 Course1
2 100022 Course2
3 100024 Course3
4 100023 Course1
ID
是两个表中的主键。 CourseID
是关系的列。
数据库(SQL Server)中也没有明确的关系。
当我尝试通过将CourseID
指定为执行映射所需的键来在EF中进行映射时,会抛出一个错误,告知它未被定义为键属性。我无法将其添加为Key属性,因为它是一个可以为空的字段。
有什么方法可以做这个映射吗?
答案 0 :(得分:0)
这是一个非常粗略的架构。但是,您可以使用public class Course
{
[Key, Column(Order = 0)]
public int ID { get; set; }
[Key, Column(Order = 1)]
public int? CourseID { get; set; }
public string CourseName { get; set; }
}
public class Student
{
[Key]
public int ID { get; set; }
public string Name { get; set; }
public int? CourseID { get; set; }
[ForeignKey("CourseID")]
public Course Course { get; set; }
}
表的复合键。我还没有测试过,但这样的事情应该可行。
store._metadataFor