use*_*740 12 entity-framework foreign-key-relationship unique-key edmx entity-framework-6
使用Schema首先,我有一个数据库结构,如此
ExternalDataItems
---
edataitem_id PK -- surrogate auto-increment - NOT for FK relation here
datahash UX -- Candidate Key / Unique Index (binary(20))
ExternalMaps
---
emap_id PK
ext_datahash FK on ExternalDataItems.datahash - NOT referencing the surrogate PK
Run Code Online (Sandbox Code Playgroud)
并且在生成SSDL/CSDL之后1有这个
<Association Name="FK_ExtMaps_ExtDataItems">
<End Multiplicity="1" Role="ExternalDataItems" Type="Store.ExternalDataItems" />
<End Multiplicity="*" Role="ExternalMaps" Type="Store.ExternalMaps" />
<ReferentialConstraint> <!-- error on this element -->
<Principal Role="ExternalDataItems">
<PropertyRef Name="datahash" />
</Principal>
<Dependent Role="ExternalMaps">
<PropertyRef Name="ext_datahash" />
</Dependent>
</ReferentialConstraint>
</Association>
Run Code Online (Sandbox Code Playgroud)
这会在<ReferentialConstraint>元素上生成错误
运行转换:主体角色ExternalDataItems引用的属性必须与关系FK_ExtMaps_ExtDataItems的关系约束中的主体角色引用的EntityType ExternalDataItem的键完全相同.确保在主体角色中指定了所有关键属性.
对于PK,ExternalDataItems SSDL的"主要角色"(?)如下所示,除了作为简单的标量属性外,UX似乎不存在2:
<EntityType Name="ExternalDataItems">
<Key>
<PropertyRef Name="edataitem_id" />
</Key>
..
<Property Name="datahash" Type="binary" MaxLength="20" Nullable="false" />
</EntityType>
Run Code Online (Sandbox Code Playgroud)
如何添加此关系 - 使用FK到非PK候选键?(在"工作"之后,我还想要一个CSDL的导航属性.)
此外,关联线没有出现在设计界面 - 我怀疑这只是因为这个错误而产生的影响.我正在使用Entity Framework版本6.1.1(最新发布在nuget上)和Visual Studio 2013 Ultimate Update 4.
1标准EDMX"从数据库更新"似乎没有获得这些FK关系(可能与此错误有关),上述结果是在使用Huagati DBML/EDMX工具之后.如果我尝试"添加关联"之前设计师会错误地尝试使用主键 - 任何FK关系都不支持 - 并且没有提供选择替代属性的选项.
2尝试<UniqueConstraint>按照"实体框架中的唯一约束"中所述添加元素会导致友好的XML验证错误:
元素'ElementType'..具有无效的子元素'UniqueConstraint'.
看起来像"缺少重要功能"
..实体框架目前仅支持基于主键的引用约束,并且没有唯一约束的概念.
您可以删除DB方案中的外键并使用LINQ连接表:
from item in ExternalDataItems
join map in ExternalMaps on item.datahash = map.ext_datahash
select new { item.edataitem_id, map.emap_id };
Run Code Online (Sandbox Code Playgroud)
您还可以使用这些连接表创建VIEW并使用该表.
| 归档时间: |
|
| 查看次数: |
1859 次 |
| 最近记录: |