2017-05-09 1 views
0

Ich versuche, bestimmte Eigenschaften zu aktualisieren, aber nur, wenn der Benutzer die Entität besitzt.Entity Framework-Update-Eigenschaften, einzelne Abfrage, durch Besitzer eingeschränkt

//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; 

Gibt es eine Weise, die ich es abhängig entity.UserId == userId machen kann, ohne vorher _context.MyEntities.SingleOrDefaultAsync(i => i.Id == entity.Id) zu tun (aka kann ich umgehen das Update/Patch mit einer Abfrage statt zwei)? Oder ist das nicht möglich?

Antwort

0

Wir hatten eine großartige Erfahrung mit dem EntityFramework.Extended Paket. Es ermöglicht Ihnen, nur bestimmte Eigenschaften zu aktualisieren nach Ihr Filter angewendet wird.
Zum Beispiel:

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

Sie können die ConcurrencyCheckAttribute die UserId Eigenschaft hinzufügen.

Jetzt EF vergleicht diesen Wert bei der Aktualisierung und wenn es in der DB anders ist, dann erhalten Sie eine DbUpdateConcurrencyException.

+0

Aber können Sie zwischen dieser und einer 'DbUpdateConcurrencyException' unterscheiden? – ATD

Verwandte Themen