1

私は持っていますData = new ObservableCollection<DATA>(dataContext.DATA);

dataContext私のエンティティです。DATASQLServerテーブルです。

次に、SQLServerのテーブルを埋めるImportメソッドを実行DATAします。

    public static void Import(DataTable table)
    {
        var dataContext = DataContext.Instance.Entities;

        foreach (DataRow row in table.Rows)
        {
            .......

            var dataRow = new DATA
            {
               .........
            };

            dataContext.AddToDATA(dataRow);
        }
        dataContext.SaveChanges();
    }

しかし、私のObservableCollectionDataはまだ空です。どうすれば更新できますか?

4

2 に答える 2

3

ObservableCollection<T> Constructor (IEnumerable<T>)

指定されたコレクションからコピーされた要素を含むObservableCollectionクラスの新しいインスタンスを初期化します。

ここでのキーワードは、コレクションから要素をコピーすることです。その後、渡した列挙との同期は保持されません。コードは、オブジェクト(ObservableCollection)dataContextではなく、オブジェクトを更新しています。DataObservableCollectionの独自の同期バージョンを構築するか、同期を維持するためのメソッドを作成する必要があります。

オブジェクトの同期を維持する必要がなくdataContext、1回限りのロードでのみ使用したい場合は、ObservableCollectionのコンストラクターで使用する前に、その列挙にすべての適切なオブジェクトを含める必要があります。

私の推測では、あなたは次のようなことをします:

Data = new ObservableCollection<DATA>(dataContext.DATA)

// Afterwards...
Import(foobar);

そのはず:

Import(foobar);

// Afterwards...
Data = new ObservableCollection<DATA>(dataContext.DATA)
于 2013-01-31T17:18:13.770 に答える
1

datacontextからデータを再取得し、その時点で監視可能なコレクションに追加する必要があります。

public static void Import(DataTable table)
{
    var dataContext = DataContext.Instance.Entities;

    foreach (DataRow row in table.Rows)
    {
        .......

        var dataRow = new DATA
        {
           .........
        };

        dataContext.AddToDATA(dataRow);
    }
    dataContext.SaveChanges();

    var data = datContext.whateverretreval();

    Data = data;
}
于 2013-01-31T17:17:59.503 に答える