EF CORE: Wie kann man mit einem Entität ohne Datenbank-generierte Schlüssel umgehen?C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 EF CORE: Wie kann man mit einem Entität ohne Datenbank-generierte Schlüssel umgehen?

Post by Anonymous »

In Entity Framework Core 7 habe ich die folgende Entität: < /p>

Code: Select all

 [Index(nameof(Time))]
[Table("DataEntries")]
public class DataEntry
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
public DateTime Time { get; set; } = DateTime.Now;

public byte StatusCode { get; set; }
}
< /code>
Ich kann erfolgreich neue Einträge einfügen, aber das Aktualisieren oder Löschen eines Eintrags führt immer zu dem folgenden Fehler: < /p>

DBUpDateConcurrencyException beim Aufrufen von Savechangen (). /> < /blockquote>
Hier ist ein minimales Beispiel, das jedes Mal die Ausnahme erzeugt: < /p>
var result = ctx.DataEntries
.Where(t => t.Time >= start && t.Time  t.Time).First();
result.StatusCode = 1;

ctx.SaveChanges();
< /code>
Bei weiterer Untersuchung vermute ich nachdrücklich, dass es damit zu tun hat, dass mein Entität einen manuellen Set -Schlüssel hat (und daher keine Identitätsspalte in der Datenbank). Wenn ja, wie? Das [url=viewtopic.php?t=20324]Problem[/url] hierfür ist, dass die Datenbank bereits viele tausend Zeilen enthält. Ich weiß daher nicht, ob eine einfache Datenbankmigration in diesem Fall funktioniert.    var result = ctx.DataEntries.First();
result.StatusCode = 1;

ctx.SaveChanges();
edit2 : Ich habe auch versucht, eine separate "ID" -Spalte vom Typ int hinzuzufügen. Ich habe die Spalte mit zufälligen INTs (nur zum Testen) besiedelt. Ich habe dann in der Entitätsklasse eine [primaryKey] als "Zeit" und "ID" als Identitätsspalten deklariert. Funktionierte aber immer noch nicht.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post