我已經定義了一個關係,它是一個可以包含許多課程的模塊。實體框架4 - 將現有模型添加到關聯
我有一個接口,它允許你添加課程到模塊;我曾嘗試下面的代碼,但是這會導致一個新的模塊中的模塊表中創建,然後添加到課程
int moduleID = viewModel.moduleID;
course.Modules.Add(new Module { ID = moduleID })
SaveChanges();
應該是什麼的正確方法?
編輯:使用斷點調試顯示整數模塊ID是正確的。
我已經定義了一個關係,它是一個可以包含許多課程的模塊。實體框架4 - 將現有模型添加到關聯
我有一個接口,它允許你添加課程到模塊;我曾嘗試下面的代碼,但是這會導致一個新的模塊中的模塊表中創建,然後添加到課程
int moduleID = viewModel.moduleID;
course.Modules.Add(new Module { ID = moduleID })
SaveChanges();
應該是什麼的正確方法?
編輯:使用斷點調試顯示整數模塊ID是正確的。
你可以試試這個:
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();
正如你可以看到我並不需要從數據庫中加載模塊進行連接。這對於多對多關係非常有用,但在一對多關係的情況下可能會更復雜。
您正在創建一個新模塊,這意味着您獲得的行爲是正常的。您需要做的是,從數據上下文中獲取與moduleID
對應的Module
對象,然後將其添加到您的課程中。
int moduleID = viewModel.moduleID;
var module = context.Modules.FirstOrDefault(m => m.ID == moduleID);
course.Modules.Add(module)
SaveChanges();
希望這有助於:)