6

次のようにデータソースを設定している devexpress GridControl があります。

var regs = (from vcap in context.chaps
                             select vcap);

gridControl1.DataSource = new BindingList<chaps>(regs.ToList());

しかし、グリッドを使用すると、追加または削除した行は保存されず、最初の行への変更のみが保存されます。

私がこれを行う場合:

gridControl1.DataSource = context.chaps.Local;

私は行を取得AddNewRowせず、視覚的に新しい行を追加することさえしません。

私がこれを行う場合:

gridControl1.DataSource = context.chaps.ToList();

行を取得し、変更を保存できます。行は視覚的に削除されますが、データベースにはありませんAddNewRow

私がこれを行う場合:

gridControl1.DataSource = context.chaps;

私はこの例外を受け取ります:

Data binding directly to a store query (DbSet, DbQuery, DbSqlQuery) is not supported. Instead populate a DbSet with data, for example by calling Load on the DbSet, and then bind to local data. For WPF bind to DbSet.Local. For WinForms bind to DbSet.Local.ToBindingList().

ToBindingListしかし context.chaps.Local にもメソッドがありません。

これはdevexpressの問題ではないと思いますが、データソースを適切に設定する方法がわかりません。context.chaps.Local.ToBindingList()同等のものを取得する方法はありますか?

4

2 に答える 2

7

context.chaps.LocalですObservableCollection<T>。ただしToBindingList、のメソッドではObservableCollection<T>なく、の拡張メソッドですDbExtensions

public static BindingList<T> ToBindingList<T>(
    this ObservableCollection<T> source) where T : class;

このメソッドを使用して Intellisense で表示するには、呼び出しを試みるコード ファイルに対応する名前空間を含める必要がありますToBindingList()

using System.Data.Entity;
于 2013-05-23T19:52:39.617 に答える