[英]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
文件,則應該定義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,則需要確保正確定義了關系,並且將Table1
的Table2
成員定義為單個實例屬性而不是集合...如果使用CF,可以嗎?發布您的模型代碼?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.