2017-05-08 5 views
0

私はDataContext持っLINQ、一覧表示して、新しいレコードを挿入するテーブルを変換し

private List<IngramProduct> ingramProducts = 
     (from ingramProduct in dbCatalogue.IngramProducts 
     select ingramProduct).ToList(); 

私は次のいずれかの値を変更した場合このリスト内のオブジェクトのプロパティを呼び出してdbCatalogue.SubmitChanges();を呼び出すと、データベースに保存されます。

しかし、私は新しいオブジェクトを作成し、(SubmitChangesが呼ばれた)テーブルに新しいレコードとして保存するつもりはないリストにこのオブジェクトを挿入した場合。

私の質問は:リストに新しいオブジェクトを追加し、データベース(SubmitChangesメソッドを呼び出す)に新しいレコードとして保存することができますか?

+1

_ "新しいオブジェクトを作成し、このオブジェクトをリストに挿入すると、テーブルに新しいレコードとして保存されません" _ ...これを 'テーブル 'に追加しているのですか? 'リスト'? 'List'にのみ追加すれば、' Table'はそれが新しい行を保存することをどのように知ることができるのでしょうか? –

答えて

0

あなたがSubmitChanges()を呼び出した後、このオブジェクトを永続化したい場合は、元のTableに新しい製品を追加する必要があります。

dbCatalogue.IngramProducts.InsertOnSubmit(myNewIngramProduct); 

内マテリアます作られてDBのクエリとコレクションToListを呼び出した後List、これは元のTableとは無関係です。

+0

は、これが解決策になることを考えていたが、それは(そう、私の質問は愚かに見えるかもしれLINQに新しい)私にとっては少し混乱だ:私は、リスト内のオブジェクトを変更した場合、なぜそれがデータベースレコードに保存されようとしている(そうリストはテーブルと無関係に見えませんが)リストに新しいオブジェクトを追加すると、データベースに保存されません。 リストのような宣言<> _list =().ToListは_listが括弧の間にあるものの「リストバージョン」へのポインタであることを意味するものではありませんか? – BenjiK

+0

シングルオブジェクトは変更トラッカーによって監視されており、そのメンバーへの変更は 'SubmitChanges'が呼び出され、データベースに反映されます。 'ToList'を呼び出すと、*コレクション*(リスト自体)は単にクエリの*投影*です。このリストは、元のコンテキストとは何の関係もなく、単なるオブジェクトのコンテナです。 –

+0

詳細情報は、[ドキュメント]の中に発見された(https://msdn.microsoft.com/en-us/library/bb386982(V = vs.110).aspxの) –

関連する問題