EF DB-first映射混乱

Sha*_*ica 5 c# entity-framework database-first entity-framework-5

由于EF的这个小怪癖,我有一个令人沮丧的情况.这是一个简单的行为演示.首先是数据库架构:

在此输入图像描述

如您所见,RestrictedProduct是产品的一个特例,我打算Product用一些特殊的代码创建一个子类.

现在我导入到EF数据模型:

在此输入图像描述

哎呀!EF看到RestrictedProduct只有2个字段,都是FK,所以它将它映射为Product和之间的一对多关系Restriction.所以我回到数据库并添加一个Dummy字段RestrictedProduct,现在我的EF模型看起来好多了:

在此输入图像描述

但那个Dummy领域是愚蠢而毫无意义的.也许我可以删除它?我从数据库表和实体模型中删除了该字段,然后从数据库刷新模型...

在此输入图像描述

不好了!该Product-Restriction协会以新名称(RestrictedProduct1)返回!另外,它不会编译:

错误3034:从行(x,y)开始映射片段时出现问题:具有可能不同键的两个实体映射到同一行.确保这两个映射片段将AssociationSet的两端映射到相应的列.

有没有办法防止这种行为,没有将Dummy字段保留在RestrictedProduct桌面上?

G.Y*_*G.Y 1

让我们慢慢探讨您的问题。

您需要决定的第一件事是受限制的产品是否确实是产品的特殊情况,或者是否可以扩展到每个产品。

从您最初的数据库方案来看,似乎任何产品都可能与单个限制相关,但是单个限制可以在许多产品之间共享。所以这是一个简单的一对多情况,这意味着受限制的产品不是特定情况产品!限制是一个独立的实体,与产品没有特定的关系。

因此,EF 在您的方案的第一次导入中是正确的: 1. 产品可以有 0 或 1 个限制。2. 限制是可以与许多产品相关的另一个实体。

我没有看到你的问题。