2011-04-21 69 views
2

我已經定義了一個關係,它是一個可以包含許多課程的模塊。實體框架4 - 將現有模型添加到關聯

我有一個接口,它允許你添加課程到模塊;我曾嘗試下面的代碼,但是這會導致一個新的模塊中的模塊表中創建,然後添加到課程

int moduleID = viewModel.moduleID; 
course.Modules.Add(new Module { ID = moduleID }) 
SaveChanges(); 

應該是什麼的正確方法?

編輯:使用斷點調試顯示整數模塊ID是正確的。

回答

4

你可以試試這個:

var module = new Module { ID = viewModel.moduleID }; 
// Attach first so that context doesn't track module as a new one 
context.Modules.Attach(module); 
// Now make connection to attached module 
course.Modules.Add(module); 
context.SaveChanges(); 

正如你可以看到我並不需要從數據庫中加載模塊進行連接。這對於多對多關係非常有用,但在一對多關係的情況下可能會更復雜。

1

您正在創建一個新模塊,這意味着您獲得的行爲是正常的。您需要做的是,從數據上下文中獲取與moduleID對應的Module對象,然後將其添加到您的課程中。

int moduleID = viewModel.moduleID; 
var module = context.Modules.FirstOrDefault(m => m.ID == moduleID); 
course.Modules.Add(module) 
SaveChanges(); 

希望這有助於:)