2011-08-12 9 views
2

私は2つのテーブルAとBを持っています。それらの関係は1:Nです。 すべての子テーブルで1つのフィールドを更新したいのですが、それを行うために使用するLINQ式がわかりません。すべての子エンティティ、EF/Linqを更新します。

私のようなものを考えていた:

parentEntity.childrens.All(..lambda expr..).field = value; 

をしかし、明らかにそれは働いていません。

私は他のオプションがforeach(..)だと知っていますが、可能であればL2Eが好きです。

+0

http://weblogs.asp.net/pwelter34/archive/2011/11/29/entity-framework-batch-update-and-future-queries.aspx – Mohsen

答えて

6

foreachfor、などのいずれかの方法でコレクションのすべての項目にプロパティを設定することはできません。

あなたは1行でそれを維持したい場合は、あなたが何か行うことができます:

author.Books.ToList().ForEach(b => b.PublishYear = 1999); 
+0

私は同意します。 Linqは基本的にQUERY言語です。コレクションを変更せずにコレクションを照会することを意味します。私はクエリを作成し、別のステートメントとしてクエリを実行した項目をforeachします。 – Kaido

+0

私はコレクション全体をメモリに移動しないように苦労していましたが、どちらも正しいです。乾杯。 –

3

をあなたはいずれかを介してループを持っており、すべてを更新するか、またはだろうEntity Frameworkを介して実行生SQLステートメントを使用したいですこの種のものにはるかに効率的です。

+1

この回答は次のとおりです。http://stackoverflow.com/questions/3642371/how-to-update-only-one-field-using-entity-framework/3642383#3642383 – Kit

関連する問題