2013-10-28 51 views
0

我正在使用實體框架。我正在嘗試將關係數據加載到實體的可枚舉屬性中。這些實體在數據庫中不相關,所以實體框架不知道如何加入它們。現在我試着編寫一個擴展方法(用於IQueryable),它連接兩個表並加載並將關係數據分配給指定的屬性。假設我們有一個實體,稱爲 學生:實體框架 - 加載相關數據的集合

public partial class Student 
{ 
    public List<Book> Books { get; set; } 
} 

而本書叫

public partial class Book 
{ 
    public int StudentId { get; set; } 
} 

現在的實體,我想以某種方式加載一個學生,他指派書籍是這樣的:

[Pseudo] 
context.Students.Include([setToJoin], [foreignKey], [key], [sourceCollection]) ; 
= 
context.Students.Include(context.Books, book => book.StudentId, student => student.Id, student.Books); 

我真的很感激任何幫助!

+0

那麼,爲什麼數據庫中沒有相關的實體呢?似乎他們應該是參照誠信的緣故。 –

+1

即使未在數據庫中指定,也可以在模型中的兩個實體之間手動創建關聯。新關聯的行爲與db中定義的行爲相同。你嘗試過嗎? – wdosanjos

+0

@wdosanjos:哦真的:)?聽起來很像我正在尋找的東西!你能否詳細解釋一下或者提供一個鏈接?謝謝!在TimS:我有一個時間系統。實體框架不支持,所以我不得不放棄關係... – sjkm

回答

0

您可以在EF中手動創建關聯。請檢查here瞭解如何完成這些步驟。

+0

非常有趣。謝謝!我使用時態數據(具有ValidFrom和ValidUntil列的表)。是否有可能以某種方式選擇符合條件的相關數據 - 在這種情況下,ValidFrom <= date && ValidUntil> date? – sjkm

+0

我相信你需要在你的查詢中包含這個標準。我認爲沒有辦法在模型中嵌入它。 – wdosanjos

+0

嗯,好吧...所以我終於還是寫了查詢,而不是使用include方法加載相關數據(只有在請求的日期範圍內的數據)?謝謝,我感謝你的意見! – sjkm