일대 다 매핑을 만들려고하지만 업데이트를 저장하는 데 어려움이 있습니다.
메뉴는 0 - 1 개의 모듈을 가질 수 있습니다.
모듈은 0 개에서 많은 메뉴를 가질 수 있습니다.EF 업데이트시 CTP5 매핑이 실패합니다.
내가 새 메뉴 객체를 만들고 저장하면 모듈은 db에 저장되지만 업데이트시에는 저장되지 않습니다.
이
노력하고 있습니다 :var menu = new Menu()
menu.Title = "Menu Title";
menu.Module = repository.GetModule(2);
...
DbContext.SaveChanges()
...
는 모듈에 대한 외래 키와 메뉴 항목을 저장합니다.
menuId와 1 개
의 moduleID : 2
나는이 같은 업데이트를 만들려고 노력 해요 : 메뉴 테이블에서의 moduleID가 변경되지 않습니다
var menu = repository.GetMenu(1);
menu.Module = repository.GetModule(3);
Edit: ... DbContext.SaveChanges() ...
합니다. 무엇이 잘못 되었나요?
내 모델 :
public class Menu
{
[Key]
public int MenuID { get; set; }
public string Title { get; set; }
public int ModuleID { get; set; } <-- Is this necessary
public virtual Module Module { get; set; }
}
public class Module
{
[Key]
public int ModuleID { get; set; }
public string Name { get; set; }
public virtual ICollection<Menu> Menus { get; set; }
}
매핑 :
protected override void OnModelCreating(System.Data.Entity.ModelConfiguration.ModelBuilder modelBuilder)
{
modelBuilder.Entity<Module>().HasMany<Menu>(m => m.Menus).WithOptional().HasForeignKey(m => m.ModuleID);
}
내가 메뉴 클래스에의 moduleID를 추가했다 나의 매핑 작업을 얻으려면,하지만 난이 매핑 할 수 있습니다 다른?
Edit:
I'm using MySQL
메뉴 테이블 :
INT menuId와
VARCHAR 제목
INT의 moduleID
모듈 테이블 :
INT의 moduleID
VARCHAR 두 번째 예에서
나는 .SaveChanges()가 누락되었습니다. 죄송합니다, 나는 SQL 프로파일 러를 사용할 수 없으므로 MySQL을 사용하고 있음을 언급하는 것을 잊어 버렸습니다. ( – Frets
더 많은 조사가 끝나면 모듈이 부착 된 메뉴 객체를 저장하려고하면 아무것도 업데이트되지 않습니다. 하지만 모듈을 부착하지 않고 메뉴 객체를 저장하면 모든 것이 db에서 업데이트됩니다. – Frets