Ich verwende eine im Speicher EF Core-Datenbank wie folgt aus:Wie wird automatisch eine Spalte mit einem Entity Framework-Kern in der Speicherdatenbank inkrementiert?
var options = new DbContextOptionsBuilder<DmpContext>()
.UseInMemoryDatabase("test")
.Options;
var context = new CustomContext(options);
Ich füge einige zufällige Daten Bogus verwenden.
var resources = new Faker<Resource>()
.RuleFor(x => x.Name, x => x.Name.FullName())
.Generate(20);
In dieser Ressourcensammlung sind alle IDs immer noch Null.
Wenn ich die AddRange ausführen ich die IDs erzeugt erwarten werden:
context.Resources.AddRange(resources);
context.SaveChangesAsync();
Aber sie nicht erzeugt werden.
System.AggregateException: Ein oder mehrere Fehler sind aufgetreten. (Die Instanz des Entitätstyps 'Ressource' kann nicht verfolgt werden, da bereits eine andere Instanz mit demselben Schlüsselwert für {'ResourceId'} verfolgt wird. Beim Anhängen vorhandener Entitäten sicherstellen, dass nur eine Entitätsinstanz mit einem angegebenen Schlüsselwert angefügt ist.
Also dachte ich, dann lassen sie mich ihnen nur gesetzt und ein Autoinkrement Mechanismus selbst machen. Das hat funktioniert.
Doch als ich dann meine Add
Methoden (diese Methoden einfügen Datensätze) versuchen und zu testen. ich bin Ich kann nicht die IDs in diesen Methoden festlegen, da die ID nicht einmal in der Schnittstelle ist. Wieder würde ich erwarten, dass EF die ID automatisch generiert, aber ID 1 (das ist bereits vergeben, weil ich bereits die ID 1 erzeugt habe) bis 20).
Kann jemand einen EF Kern in der Gedächtnisdatenbank erklären, um immer seine Schlüssel automatisch zu erhöhen?
EF Kern tut Autoinkrement Tasten, die sind eingerichtet, dies unabhängig von der Verwendung im Speicher oder in der normalen Datenbank zu tun. Ziehen Sie in Erwägung, eine vollständige Repro-Datei zu erstellen (a.k.a 'mcve'), da das Problem nicht mit den aktuell bereitgestellten Informationen reproduziert werden kann - nach Aufruf von' AddRange' werden die 'Id's automatisch erzeugt. –