2012-07-13 69 views
3

我想從一個C#應用程序使用Linq /實體框架將數據保存到數據庫中。插入到單個表格非常簡單,但我不確定如何將數據插入到三個表格中,這些表格都與自動增量標識相互關聯? 這是一刮,所以我以一個線程,它的所有帖子 - 每個ThreadTitle每個郵政用戶(而不是實際的表名)相關聯。英菲插入多個相關的表

我的設計思路是將完整的線程拖入內存中,然後執行「批量」插入操作。爲了減少負載,我希望有一些方法來保持關係約束,而不需要查找,多次插入等。

+0

您是使用代碼優先還是數據庫優先? – 2012-07-13 20:43:31

+0

我不知道你在問什麼......我有我的數據庫設置PK/FK的約束,我想刮所有數據到內存中,然後不經常插入到數據庫 – Volvox 2012-07-13 20:59:27

+0

Database-first是當您使用EF從現有數據庫創建實體數據模型時。使用代碼優先,您首先設計您的類,然後使用EF基於這些類生成數據庫。 – 2012-07-13 21:09:49

回答

1

如果您想要保存兩個相關的記錄,因爲在一箇中存在FK(A )到另一個(B),執行以下操作:

  • 創建對象B

  • 對象B上下文添加

  • 創建對象A

  • 設置導航屬性在一個指向B(AB)重視B.

  • 對象A添加到關聯

  • 保存更改上下文

你不實際上必須將兩個對象添加到上下文中,一個就足夠了,因爲有相關的EF可以在樹中找到所有內容。 EF將自行確定要先插入的內容並設置正確的ID。

這是你的意思嗎?希望這可以幫助。

+0

我認爲這是我很好奇的...如果EF的工作方式,只要我創建EF中的對象,然後他們將保存到數據庫並保持它們的正確關聯(例如正確的用戶與創建線程和帖子相關聯,並在正確的線程下發布 - 所有的PK-FK關係)。 – Volvox 2012-07-13 20:57:56

+1

只要上下文知道它們,它就會工作。新對象?保存。您使用上下文加載的現有對象?沒有額外的事情要做。您使用另一個上下文加載的現有對象?附上它。 – Maarten 2012-07-14 11:38:10