Linq to Entities - Erhöht eine Spalte Primärschlüssel
-
06-07-2019 - |
Frage
Ich habe diesen Code:
Message message = new Message();
message.Id = 5;
message.EntityKey = context.CreateEntityKey("MessageSet", entity);
message.Votes++;
context.Attach(entity);
context.ObjectStateManager.GetObjectStateEntry(entity.EntityKey).SetModifiedProperty("Votes");
Save();
Aber natürlich initialisieren Abstimmungen mit 0.
Wie kann ein erzeugt so etwas wie
Update Messages set Votes=Votes+1 where Id = 5
?? Thx
Lösung
Ich glaube nicht, dass Sie diese direkt erreichen können, aber Sie könnten ein paar Import Funktionen und verwenden Sie einen SP verwenden, um zu tun, was Sie brauchen.
Andere Tipps
Wie LINQ to Entities ist ein OR-Mapper, die allgemeine Idee ist, dass man es erste Abfrage für die Einheit oder Einheiten Sie aktualisieren müssen, aktualisieren Sie sie mit Objekten in Code, und geben Sie einen Update-Befehl auf dem Object die Änderungen bestehen bleiben zu diesen Unternehmen steht. Es ist eine wichtige Sache, aber oft schwer, ein ORM für die Verwendung von wie Entity Framework, NHibernate, LINQ to SQL früh, aber der Grund zu erfassen, usw. ist die Notwendigkeit zu beseitigen SQL zu schreiben, und verwendet, um Objekte statt.
Im Folgenden soll das sein, was Sie brauchen:
Message msg = context.Messages.First(m => m.Id == 5);
msg.Votes += 1;
context.SaveChanges();
Der Aufruf von Savechanges wird SQL CUD-Anweisungen für Sie generieren, eine für jedes Update, einfügen und / oder löschen.