我正在尝试将我的模型配置为现有数据库,并且遇到了问题。之前的开发人员使用连接表建模了一对一的关系。如果我在下面有以下类和数据库结构,我该如何使用代码首先映射它?
public class Title {
public Property Property { get; set; }
}
public class Property {
public Title TitleInsurance { get; set; }
}
tbTitle
-TitleID = PK
tbPropertyToTitle
-TitleID - FK to tbTitle.TitleID
-PropertID - FK to tbProperty.PropertyID
tbProperty
-PropertyID = PK
答案 0 :(得分:0)
这里的VB.Net代码,但应该很容易翻译。使用Key
数据属性标记主键。实体框架将自动查找名为Class + ID的属性,即tbTitleID以指定为主键,但由于这在此处不适用,我们需要Key
属性。
Overridable
属性表示导航属性。在C#中,这应该等同于Virtual
属性。访问此导航属性时,Entity Framework将自动查找有效的外键关系,并填充相应的数据。
对于一对一关系,Entity Framework期望您的两个表共享相同的主键,如TitleID此处所示。
Public Class tbTitle
<Key()>
Public Property TitleID As Integer
...
Public Overridable Property Property As tbProperty
End Class
Public Class tbProperty
<Key()>
Public Property TitleID As Integer
...
Public Overridable Property Title As tbTitle
End Class
答案 1 :(得分:0)
通过流畅的API查看,我看不到通过连接表映射一对一关系的任何方法。您可以通过将其设置为多对多来伪造它,但是您需要一些额外的代码来确保您的关系集合中只有一个项目。