MenuItem オブジェクトを使用して EF Code First (EF4、CPT5) に移行しようとしているナビゲーション メニュー プロバイダーがあります。これは、何よりも EF Code First とのさまざまな関係を構築することに慣れるための演習です。
私の MenuItem には、MenuItems のコレクションである SubMenuItems というフィールドがあります。クラスを変更せずに EF Code First を使用すると、MenuItems 用に作成されたテーブルに親メニュー項目の列が追加されます。メニューは正しく表示されますが、これにより、メニュー項目を複数のサブメニューに表示する機能が削除されます。各 MenuItem をスタンドアロン項目にして、メニュー項目の SubMenuItems を他の MenuItems にリンクする別のテーブルを作成することを EF Code First に伝える適切な方法は何ですか?
public class MenuItem
{
public int ID { get; set; }
public virtual SubMenuItems { get; set; }
public string Text { get; set; }
public string Controller { get; set; }
public string Action { get; set; }
public bool IsRoot { get; set; }
public bool RequiresAuthentication { get; set; }
public virtual ICollection<MenuPermission> RequiredPermissions { get; set; }
public bool HiddenIfAuthenticated { get; set; }
public int DisplayOrder { get; set; }
}
...
public class MyDbContext : DbContext
{
public DbSet<MenuItems> MenuItems { get; set; }
public DbSet<MenuItemPermission> MenuItemPermissions { get; set; }
...
}
私は OnModelCreating をオーバーライドしようとしましたが、それぞれの試行は、壊れているか、OnModelCreating に触れずに行うのとまったく同じことを行うことで終わりました。ただ「やり方が悪い」だけだと思います。
ありがとう!