相关疑难解决方法(0)

如何让EF6在关联/关系多样性中遵守唯一约束(在FK上)?

这可能与我的另一个问题有关 - 这似乎是:

  1. 实体框架是一个可怕的关系代数映射器1或;

  2. (我希望这样)我忽略了SSDL/CSDL和EDMX模型或EF映射.

我有一个Schema First模型,模式如下所示:

ExternalMaps
---
emap_id - PK

Melds
---
meld_id - PK
emap_id - >>UNIQUE INDEX<< over not-null column, FK to ExternalMaps.emap_id
Run Code Online (Sandbox Code Playgroud)

为了验证,这些脚本如下,这应该导致ExternalMaps:1 <-> 0..1:Melds2的多重性.

ALTER TABLE [dbo].[Melds] WITH CHECK ADD CONSTRAINT [FK_Melds_ExternalMaps]
FOREIGN KEY([emap_id]) REFERENCES [dbo].[ExternalMaps] ([emap_id])

CREATE UNIQUE NONCLUSTERED INDEX [IX_Melds] ON [dbo].[Melds] ([emap_id] ASC)
Run Code Online (Sandbox Code Playgroud)

但是,当我使用EDMX设计器从数据库(SQL Server 2012)更新时,它会从头开始错误地创建关联/外键关系ExternalMap:1 <-> M:Meld.

当我尝试手动更改Meld的多重性(通过设计器中的"关联集"属性)1或者0..1,或者,我得到:

运行转换:多重性在关系'FK_Melds_ExternalMaps'中的角色'Meld'中无效.由于Dependent Role属性不是关键属性,因此Dependent …

entity-framework foreign-keys unique-key multiplicity entity-framework-6

15
推荐指数
1
解决办法
4386
查看次数

如何将EF6关联添加到不是主键的候选键/唯一键?

使用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的键完全相同.确保在主体角色中指定了所有关键属性. …

entity-framework foreign-key-relationship unique-key edmx entity-framework-6

12
推荐指数
1
解决办法
1859
查看次数