0

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

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
4

2 回答 2

0

此处为 VB.Net 中的代码,但应该易于翻译。Key用数据属性标记主键。Entity Framework 将自动查找名为 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
于 2013-08-13T05:07:13.947 回答
0

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

于 2013-08-13T21:59:09.260 回答