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桌面上?
让我们慢慢探讨您的问题。
您需要决定的第一件事是受限制的产品是否确实是产品的特殊情况,或者是否可以扩展到每个产品。
从您最初的数据库方案来看,似乎任何产品都可能与单个限制相关,但是单个限制可以在许多产品之间共享。所以这是一个简单的一对多情况,这意味着受限制的产品不是特定情况产品!限制是一个独立的实体,与产品没有特定的关系。
因此,EF 在您的方案的第一次导入中是正确的: 1. 产品可以有 0 或 1 个限制。2. 限制是可以与许多产品相关的另一个实体。
我没有看到你的问题。
| 归档时间: | 
 | 
| 查看次数: | 508 次 | 
| 最近记录: |