我有一個關於MVC3和EF中的多對多關係的基本問題。 在我的數據庫中,我有文章和標籤(多對多),通過TagArticle表連接到兩個表的外鍵。 在我的MVC項目中,我創建了具有來自文章和標籤的屬性的viewmodel,我想在一個視圖中使用它,允許用戶創建文章併爲其選擇標籤。 如何對該場景進行插入操作? 感謝您的幫助。使用MVC3中的實體框架插入到許多相關的表格和視圖模型
3
A
回答
0
像這樣的事情應該「只是工作」:
// get tags by name (tagNames is array of string)
var tags = (from t in db.Tags where tagNames.Contains(t.Name) select t).ToList();
var article = CreateArticleFromPostedForm(...);
var newTags = from tagName in tagNames.Except(tags.Select(t => t.Name)) select new Tag(tagName);
// Tags collection should be initialized properly when creating the article
// NOTE: probably better to add a constructor for Article that accepts a list of Tags
article.Tags.AddRange(tags.Concat(newTags));
db.SaveChanges();
0
如果你只需要創建新的文章中,你可以使用這種方法:
- 在你的表格,你必須張貼的文章,要麼名單分配給物品的標記ID或標記名稱
- 然後,您可以將新的
Article
添加到上下文 - 如果您發佈ID,您必須爲每個標記a創建虛擬對象第二附加到上下文
- 如果你發佈你必須加載標籤對象從數據庫中每個名字(你需要它的ID)
- 最後的名字,你可以填寫
Tags
新Article
加入上下文(它必須是作爲用於任何連接或裝載Tags
)相同的情況下
因此,它應該是這樣的:
context.Articles.AddObject(article);
int[] ids = GetIdsFromRequest();
foreach(var tag in ids.Select(id => new Tag { Id = id }))
{
context.Tags.Attach(tag);
article.Tags.Add(tag);
}
context.SaveChanges();
它應該工作,因爲你知道,所有關係到標籤是新的,但一旦你婉t修改文章並更改分配的標籤,您將需要more complicated approach。
相關問題
- 1. 實體框架 - 使用視圖模型
- 2. 實體框架 - 插入到關係表
- 3. ASP.NET - 如何使用實體框架來構建MVC3模型和視圖?
- 4. 實體框架地圖模型到表
- 5. ASP.NET MVC3和實體框架 - 在一個視圖中的一對多關係
- 6. 使用include加入實體框架中的相關實體
- 7. Automapper - 從實體框架映射許多一對多查找到視圖模型
- 8. ASP.NET MVC實體框架插入許多一對多使用MultiSelectList
- 9. 實體框架 - 使用外鍵插入到多個表中
- 10. 使用相同/相似模式和實體框架處理多個表格
- 11. 許多到許多實體框架
- 12. 實體框架4代碼第一,使用相同的模型到多個表?
- 13. 如何將視圖添加到實體框架實體模型?
- 14. 相關表格上的不同模式名稱 - 實體框架
- 15. 實體框架V1造型多到許多查找表的關係
- 16. 實體框架:表插入
- 17. 將實體框架模型映射到多個表格
- 18. 實體框架 - 插入實體與多個模型和數據庫
- 19. 建模相關的實體與SQL Server和實體框架
- 20. 通過實體框架中的視圖模型保存很多關係6
- 21. 實體框架/ EF4:在事務處理中插入多個相關實體
- 22. LINQ到實體:許多一對多加入表和視圖
- 23. 實體框架可以使用單個SaveChanges()添加許多相關實體嗎?
- 24. 實體框架模型多表到單個實體
- 25. 多實體框架模型和objectcontext
- 26. 如何使用MVC3中的一個視圖/模型和實體數據模型來處理多個表?
- 27. 從視圖插入MVC中使用enitity框架的多個模型
- 28. 實體框架和視圖
- 29. 視圖和實體框架
- 30. 實體框架和視圖