2017-05-09 4 views
0

ユーザーがエンティティを所有している場合にのみ、特定のプロパティを更新しようとしています。エンティティフレームワークの更新プロパティ、単一のクエリ、所有者によって制限される

//id of user that submitted the request 
var userId = User.Claims.First(c => c.Type == ClaimTypes.NameIdentifier).Value; 

_context.MyEntities.Attach(entity); 

_context.Entry(entity).Property(e => e.myValue).IsModified = true; 

私が(別名私は1つのクエリの代わりに、2とアップデート/パッチを処理することができます)最初_context.MyEntities.SingleOrDefaultAsync(i => i.Id == entity.Id)を行わず、それは条件付きentity.UserId == userId時に作ることができる方法はありますか?それとも不可能ですか?

答えて

0

EntityFramework.Extendedパッケージの使用経験がありました。 フィルタを適用した後、指定されたプロパティのみを更新できます。例えば
は:

_context.MyEntities 
     .Where(e => e.UserId == userId) 
     .Update(_ => new MyEntity { MyValue = myValue }); 
_context.SaveChanges(); 
0

あなたはConcurrencyCheckAttributeUserIdプロパティを追加することができます。

EFは更新時にこの値を比較し、DB内で異なる場合はDbUpdateConcurrencyExceptionを受け取ります。

+0

これと本当の 'DbUpdateConcurrencyException'の間にあなたは気づくでしょうか? – ATD

関連する問題