EF代码首次一对一与连接表

时间:2013-08-13 00:57:42

标签: entity-framework code-first one-to-one jointable

我正在尝试将我的模型配置为现有数据库,并且遇到了问题。之前的开发人员使用连接表建模了一对一的关系。如果我在下面有以下类和数据库结构,我该如何使用代码首先映射它?

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

2 个答案:

答案 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查看,我看不到通过连接表映射一对一关系的任何方法。您可以通过将其设置为多对多来伪造它,但是您需要一些额外的代码来确保您的关系集合中只有一个项目。