.NET EF4在保存时复制实体
我使用的是MVC3和EF4,在试图保存具有外键关系的实体时遇到了一些问题 这是我的型号(缩短以节省空间) 我的数据库映射是:.NET EF4在保存时复制实体,.net,asp.net-mvc-3,entity-framework-4,.net,Asp.net Mvc 3,Entity Framework 4,我使用的是MVC3和EF4,在试图保存具有外键关系的实体时遇到了一些问题 这是我的型号(缩短以节省空间) 我的数据库映射是: modelBuilder.Entity<MenuItem>().HasRequired(x => x.MenuItemCategory).WithMany().HasForeignKey(x => x.MenuItemCategoryID); 这是可行的,不会创建重复的MenuItemCategory,但是我确信我缺少了一些简单的东西,可以防止重
modelBuilder.Entity<MenuItem>().HasRequired(x => x.MenuItemCategory).WithMany().HasForeignKey(x => x.MenuItemCategoryID);
这是可行的,不会创建重复的MenuItemCategory,但是我确信我缺少了一些简单的东西,可以防止重复,而不必使用menuItem.MenuItemCategory=。。。呼叫控制器
我到处都找过了,但到目前为止没有找到任何有效的方法:(
非常感谢!试试这个:
public void CreateMenuItem(MenuItem menuItem)
{
MissChuDataContext.MenuItems.Add(menuItem);
MissChuDataContext.Entry(menuItem.MenuItemCategory).State = EnttiyState.Unchanged;
MissChuDataContext.SaveChanges();
}
问题在于,当您调用Add
EF时,不仅会添加menuItem,还会添加对象图中的所有实体。在进行任何更改之前,如果您没有通过相同的上下文实例加载附加或添加到上下文中的所有实体,则必须始终手动处理这些实体的状态
modelBuilder.Entity<MenuItem>().HasRequired(x => x.MenuItemCategory).WithMany().HasForeignKey(x => x.MenuItemCategoryID);
[HttpPost]
public ActionResult CreateMenuItem(MenuItem menuItem)
{
menuItem.MenuItemCategory = MenuItemRepository.GetMenuItemCategoryByID(menuItem.MenuItemCategory.MenuItemCategoryID);
MenuItemRepository.CreateMenuItem(menuItem);
return View();
}
public void CreateMenuItem(MenuItem menuItem)
{
MissChuDataContext.MenuItems.Add(menuItem);
MissChuDataContext.Entry(menuItem.MenuItemCategory).State = EnttiyState.Unchanged;
MissChuDataContext.SaveChanges();
}