MVC3 & EF4를 사용하여 외래 키 관계가있는 엔티티를 저장할 때 약간의 문제가 발생합니다..NET EF4 엔티티 복제시 저장
public void CreateMenuItem(MenuItem menuItem)
{
MissChuDataContext.MenuItems.Add(menuItem);
MissChuDataContext.SaveChanges();
}
내 데이터베이스 매핑은 다음과 같습니다 :
modelBuilder.Entity<MenuItem>().HasRequired(x => x.MenuItemCategory).WithMany().HasForeignKey(x => x.MenuItemCategoryID);
여기에 그럼 난 메뉴 아이템을 절약 내 저장소에이 방법이 내 (공간을 절약하기 위해 단축) 모델
public class MenuItem
{
/// <summary>
/// The ID
/// </summary>
[Key]
public int MenuItemID { get; set; }
/// <summary>
/// Foreign key to menu item category
/// </summary>
public int MenuItemCategoryID { get; set; }
/// <summary>
/// The item category
/// </summary>
public MenuItemCategory MenuItemCategory { get; set; }
}
public class MenuItemCategory
{
/// <summary>
/// The ID
/// </summary>
[Key]
public int MenuItemCategoryID { get; set; }
/// <summary>
/// The name
/// </summary>
[Required]
[DataType(DataType.Text), StringLength(128)]
public string Name { get; set; }
}
입니다
그러나 어떤 이유로 repo 메서드는 새 M을 저장할 때 중복 된 MenuItemCategory 엔터티를 만듭니다. 기존 MenuItemCategory와 관련된 enuItem입니다. 그러나 내가 뭔가를 누락 확신이 작동하고 중복 MenuItemCategory을 만들지 않습니다
[HttpPost]
public ActionResult CreateMenuItem(MenuItem menuItem)
{
menuItem.MenuItemCategory = MenuItemRepository.GetMenuItemCategoryByID(menuItem.MenuItemCategory.MenuItemCategoryID);
MenuItemRepository.CreateMenuItem(menuItem);
return View();
}
:
가 나는 컨트롤러 컨텍스트에서 MenuItemCategory를 재 할당하여 작업 얻을 관리해야 간단합니다. 중복을 막을 수 있고, 컨트롤러에서 menuItem.MenuItemCategory = ... 호출을 사용하지 않아도됩니다.
public void CreateMenuItem(MenuItem menuItem)
{
MissChuDataContext.MenuItems.Add(menuItem);
MissChuDataContext.Entry(menuItem.MenuItemCategory).State = EnttiyState.Unchanged;
MissChuDataContext.SaveChanges();
}
문제는 당신이 Add
를 호출 할 때 EF는 모든 엔티티를 추가하는 것입니다!
유무는