簡體   English   中英

嘗試與SQL和Entity Framework建立0..1:1關系

[英]Trying to set up a 0..1 : 1 relationship with SQL and Entity Framework

假設數據庫中有兩個表。

表1具有以下字段:

Id
Field 2
Field 3

表2具有以下字段:

Table1Id
Field 2
Field 3

現在,表1的PK是Id,表2的PK是Table1ID(這很有意義。)

Table1可能有也可能沒有與之相關的Table2實體。 (取決於Table1.Field2的值是否為3,但無論如何..)

我在Table2上設置了FK,以使Table1.Id與Table2.Table1Id相關

我這里的最終目標是,當通過實體框架(順便說一句db-first)訪問Table1時,我可以通過Table1.Table2(應該為null或填充)進入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簽出。

編輯:

在整個過程中,一切都弄亂了。 我恢復了模型並再次/從頭開始建立連接,並且神奇地起作用了。 我將嘗試考慮為什么要這樣做,如果發現原因,請進行編輯。

您在使用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,則需要確保正確定義了關系,並且將Table1Table2成員定義為單個實例屬性而不是集合...如果使用CF,可以嗎?發布您的模型代碼?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM