2011-09-26 70 views
2

我們有一個表格「問題」,其中包含外部聯繫人的「聯繫人」表格。理想情況下,當添加新問題時,用戶應該從下拉列表中選擇聯繫人但在某些情況下,聯繫人可能不存在,因此用戶可以添加最少的新聯繫人詳細信息以將問題存入數據庫(這是一個支持桌面應用程序,速度對於操作員來說是至關重要的)。聯繫人數據將在稍後清理實體框架(4.0) - 使用外鍵添加新記錄

因此,在代碼中,我們使用實體框架檢測到新聯繫人並在數據庫中創建一個新聯繫人:_context.AddToContacts(_contact);。然後,我們需要檢索新的ID以更新問題 - 所以從聯繫人表中讀取最後添加的記錄。 這工作正常。

然後我們使用ContactsReference.EntityKey構建問題記錄,包括新的外鍵。 當我們保存問題SaveChanges時,我們得到的問題記錄沒問題(使用正確的外鍵返回聯繫人),但我們得到另一個聯繫人記錄添加到數據庫。

我們在這裏做了太多的工作嗎?或者Entity Framework能夠同時處理兩個表之間正確的數據鏈接和管理?

回答

3

您可以在單個事務中執行這兩個操作。

var contact = new Contact(){/*initialize properties*/}; 
var issue = new Issue(){/*initialize properties*/}; 

issue.Contact = contact; 

_context.AddToIssues(issue); 

_context.SaveChanges(); 

EF將檢測到新聯繫人並將添加它。

+0

謝謝 - 我們以爲我們錯了。 – user964810