1対多のマッピングを作成しようとしていますが、更新を保存する際にいくつかの問題があります。
メニューは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
私はこのようなアップデートをしようとしています:
var menu = repository.GetMenu(1);
menu.Module = repository.GetModule(3);
Edit: ... DbContext.SaveChanges() ...
ModuleIDはメニュー表では変更されません。 どうしたのですか?
マイモデル:
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);
}
私のマッピング作業を取得するには、私は、MenuクラスにModuleIDはを追加する必要がありましたが、私はこれをマッピングすることができます違う?
Edit:
I'm using MySQL
メニュー表:
int型menuID属性
varchar型のタイトル
int型ModuleIDは
モジュールテーブル:
int型ModuleIDは
varcharの2番目の例では
私は行方不明の.SaveChanges()を追加しました。申し訳ありませんが、私はSQLプロファイラを使用することはできませんので、私はMySQLを使用していることを忘れていた:( – Frets
私はモジュールを添付してメニューオブジェクトを保存しようとすると、しかし、モジュールを接続せずにメニューオブジェクトを保存すると、すべてがdb内で更新されます。 – Frets