手动实体框架关联

本文关键字:关联 框架 实体 | 更新日期: 2023-09-27 18:19:12

我有以下表格:

Table Group (
   id INT PK,
   year INT PK,
   name VARCHAR
)
Table Person (
    id PK,
    GroupID INT,
    name VARCHAR
)

数据库没有定义外键,所以我想创建一个从Person表GroupID到Group表id的手动关联。

要做到这一点,右键单击Person并添加关联。我创建了一个"多对一"的组织,一切都很顺利。问题是当我添加映射时。因为Group表有两个主键实体框架是从Person表映射到year键的东西。

我需要做什么来创建关联?

手动实体框架关联

您不能创建这样的关联,因为EF遵循与数据库相同的规则。所有来自主实体的PK列必须作为从属实体中的FK列存在。

唯一的方法可以是一些数据库视图选择具有Id和Name的不同组,并映射为只读实体,并在这两者之间构建导航。我没有试过,但我想应该有用。它也有自己的缺点,因为您将有两个完全不相关的组实体,而与人相关的实体将不接受任何修改(除非将自定义SQL命令或存储过程映射到插入、更新和删除操作)。