c# – 实体框架6可选单向关系

我有两张桌子

Client
------------------------
Id           (string) <-- PrimaryKey
Name         (string)
Number       (int)

Department:*
------------------------
Id           (int) <-- Primary key
Name         (string)
ClientNumber (int?)
Client       (Client, virtual)
.....

现在我想创建一个从Departmant到Client的可选关系(使用ClientNumber).我在Department类(Client)中创建了一个虚拟属性,现在我需要使用EntityTypeConfiguration配置关系.

在数据库中没有配置外键,我无法更改数据库.我也不能改变实体(类)客户端.

所以我需要告诉EntityFramework,Department类中的ClientNumber与Client类中的Number属性相关(可选).

但是我不知道如何告诉EF,该部门的ClientNumber与客户号码属性相关,而不是客户端的主要密钥. (不改变客户实体类)

编辑:客户端上的Number属性对于每个条目是唯一的.

这种关系应该导致一个sql语句,如下所示:

SELECT .....
FROM Department D LEFT OUTER JOIN Client C ON (D.ClientNumber = C.Number)

使用Linq中的联接可以很容易地做到这一点,但是只要:

dbContext.Departments.Include(d => d.Client) 

在包含客户端的Department类上使用虚拟属性(如果有)

正如@Gert Arnold所提到的,这还不是“可能的”.
实体框架7将支持此功能.

对于那些想要更新的人来说,这里是功能讨论/投票.

Unique Constraint (i.e. Candidate Key) Support

转载注明原文:c# – 实体框架6可选单向关系 - 代码日志