簡體   English   中英

在實體框架中,在父實體中加載子級(非主鍵關聯)

[英]In Entity framework load child in parent entity (non primary key association)

我是Entity Framework的新手,所以我不知道其中使用的技術術語。 對不起,我的英語不好。

我正在一個有實體框架並且有一個.edmx文件的項目中工作。 該文件具有在其中創建的實體。

因此,我創建了2個實體,並將其命名為TableA和TableB。 pid是TableA的實體密鑰,cid是TableB的實體密鑰。 並在其中建立了多對一關系。 即TableA row1可以具有TableB_cid = 1 TableA row2也可以具有TableB_cid = 2

然后我做了“從模型生成數據庫”

CREATE TABLE [TableA] (
    [pid] nvarchar(max)  NOT NULL,
    [name] nvarchar(max)  NOT NULL,
    [TableB_cid] nvarchar(max)  NOT NULL
);
GO


CREATE TABLE [TableB] (
    [cid] nvarchar(max)  NOT NULL,
    [name] nvarchar(max)  NOT NULL
);

pid|name|TableB_cid
--------------------
1 | a | 2
2 | b | 2
3 | c | 1


cid|name
------------
1 | s
2 | f

現在在C#代碼中,我寫了這個

TableA obj = repository.All().Single(w=>w.pid == "1")
context.Entry<TableA>(obj).Reference<TableB>(o => o.TableB).Load();

現在,這將加載cid = 1的TableB(但是我真正想要的是加載cid = 2的TableB)。

我認為其匹配的主鍵為主鍵,而不是TableB_cid(TableA)到cid(TableB)。

所以我做錯了請幫忙。

編輯:
簡而言之,我正在尋找一種方法,可以在Entity Framework 4.0中添加表A的非主列與表B的主列的關聯。 而且我不想使用linq查詢和聯接。 我已經試過,但我不能找到一個在EDMX文件的方式或選項,我可以做到這一點。 在此處輸入圖片說明

在此處輸入圖片說明

在此處輸入圖片說明 謝謝,

中號

    var childs = from c in context.Children
                      where c.cid = o.Child_cid;

我認為這應該對您有幫助。

我不確定我是否理解問題,但是在您的示例中,您是否只是嘗試使用ID 1訪問TableA的TableB實體?

如果是這樣,如何處理:

TableA obj = repository.All().Single(w=>w.pid == "1");
TableB SecondTable = obj.TableB;

SecondTable.cid應該為2,是,而obj.pid應該為1。如果不是,那么您得到什么值?

暫無
暫無

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

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