WinFormsでEntityFramework5.0を使用しており、MSDNのEntityFrameworkWebサイトにあるWinFormsを使用したデータバインディングのチュートリアルに従っています。ソートされた順序を保存できるように、CategoryクラスをSortIdを持つように変更しました。
public class Category
{
private readonly ObservableListSource<Product> _products =
new ObservableListSource<Product>();
public Category(int pSortId = 0)
{
Name = "New Category";
SortId = pSortId;
}
public int CategoryId { get; set; }
public string Name { get; set; }
public int SortId { get; set; }
public virtual ObservableListSource<Product> Products { get { return _products; } }
}
ただし、SortIdを追加した後、アプリケーションはDataGridViewでのカテゴリの表示を停止しました。デバッガーをステップ実行し、OnLoadメソッドにデバッグステートメントを追加すると、_context.Categories.Load()が呼び出されると、そのメソッドの実行が途中で停止することがわかりました。つまり、categoryBindingSourceにデータソースが割り当てられることはありません。
_context.Categories.Load()はここで呼び出されます(上記のチュートリアルとまったく同じです)
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
_context = new ProductContext();
_context.Categories.Load();
this.categoryBindingSource.DataSource =
_context.Categories.Local.ToBindingList();
}
質問: Loadメソッドがこれを行う理由を誰かが知っていますか?(これはDbExtensions.Loadです)
必要に応じて、ProductContextクラス(チュートリアルから変更されていない)は次のとおりです。
public class ProductContext : DbContext
{
public DbSet<Category> Categories { get; set; }
public DbSet<Product> Products { get; set; }
}