0

假设我们的数据库中有两个表。

表 1 有字段:

Id
Field 2
Field 3

表 2 有字段:

Table1Id
Field 2
Field 3

现在 Table1 的 PK 是 Id,而 Table 2 的 PK 是 Table1ID(这是有道理的。)

Table1 可能有也可能没有与之相关的 Table2 实体。(取决于 Table1.Field2 的值是否为 3,但无论如何..)

我在 Table2 上设置了一个 FK,以便 Table1.Id 与 Table2.Table1Id 相关

我的最终目标是,当通过实体框架(顺便说一下,db-first)访问 Table1 时,我可以通过 Table1.Table2 (应该为空或填充)访问我的 Table2 实体。

现在,我必须做类似 Table1.Table2s.First()

我缺少什么关系让这个 First() 不必要?

注意:表 1 已经存在于我们的数据库中并被使用。表 2 是新事物的一部分。

这是我当前创建的 Table2 导致我的问题

CREATE TABLE Table2(
    Table1Id NUMERIC(18, 0),
    Field2 BIT NOT NULL,    
    Field3 BIT NOT NULL,    


    CONSTRAINT Table2_pk PRIMARY KEY (Table1Id ),

    CONSTRAINT FK_Table1ID
        FOREIGN KEY (Table1Id)
        REFERENCES Table1(Id)
);

更奇怪的是,EDMX 中的一切看起来都很好

此外,EDXM 文件的关联检查出多重性 1 和 0..1

编辑:

经过足够的笨拙,这行得通。我恢复了我的模型并从头开始/再次/建立了连接,它神奇地起作用。如果我弄清楚原因,我会尝试考虑为什么会这样工作并进行编辑。

4

1 回答 1

1

您使用的是 DB Fist 还是 Code First?使用 DB First,它应该可以正常工作:

这是我首先使用 EF DB 时得到的图像: EDMX

这是一张图片,显示此设置确实正确地给出了单例关系:

辛格尔顿

此外,如果您.edmx使用文本编辑器编辑文件,则Association属性应定义如下:

<Association Name="FK_Table1ID">
          <End Role="Table1" Type="XOneModel.Store.Table1" Multiplicity="1" />
          <End Role="Table2" Type="XOneModel.Store.Table2" Multiplicity="0..1" />
          <ReferentialConstraint>
            <Principal Role="Table1">
              <PropertyRef Name="id" />
            </Principal>
            <Dependent Role="Table2">
              <PropertyRef Name="Table1Id" />
            </Dependent>
          </ReferentialConstraint>
        </Association>

你能仔细检查一下吗?

如果您使用的是 Code-First,那么您需要确保您正确定义了您的关系,并且您将Table2成员定义Table1为单个实例属性而不是集合......如果您使用的是 CF,您可以发布您的型号代码?

于 2013-11-11T14:07:33.200 回答