Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.NET EF4在保存时复制实体_.net_Asp.net Mvc 3_Entity Framework 4 - Fatal编程技术网

.NET 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,但是我确信我缺少了一些简单的东西,可以防止重

我使用的是MVC3和EF4,在试图保存具有外键关系的实体时遇到了一些问题

这是我的型号(缩短以节省空间)

我的数据库映射是:

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();
}