Entity Framework 7 IDENTITY_INSERT

asp.net-core c# entity-framework entity-framework-core sql

Frage

Ich muss eine große Menge an Benutzerdaten in einer Datenbank speichern, in der jeder Benutzer bereits eine ID als Schlüssel hat. Da diese Benutzer jedoch alle aus einem größeren Pool von Benutzern stammen, wird die ID nicht erhöht und kann nicht automatisch generiert werden. Ich muss in der Lage sein, die ID manuell einzustellen.

Gibt es einen einfachen Weg, dies zu tun?

Akzeptierte Antwort

Ich habe einige Tests gemacht und das scheint für mich auf EF 7.0.0 rc1-final zu funktionieren:

modelBuilder.Entity<Foo>().HasKey(x => x.Id);
modelBuilder.Entity<Foo>().Property(x => x.Id).ValueGeneratedNever();    

Mein Testcode:

static void Main(string[] args)
{
    using (var db = new FooContext())
    {
        var myFoo = new Foo {Id = 1002, Descr = "Test"};
        db.Add(myFoo);
        db.SaveChanges();
    }
    using (var db = new FooContext())
    {
        var myFoo = db.Foos.FirstOrDefault(x => x.Id == 1002);
        Console.WriteLine($"id = {myFoo?.Id}, descrip = {myFoo?.Descr}");
    }
}

(vollständiger Programmcode hier: http://pastebin.com/hSs9HZCP )

Es fügt einen Datensatz mit der angegebenen ID korrekt ein und ruft ihn ab, und in der Tabelle wird der richtige Primärschlüssel angegeben.

Dies ist der generierte Migrationscode:

migrationBuilder.CreateTable(
    name: "Foo",
    columns: table => new
    {
        Id = table.Column<long>(nullable: false),
        Descr = table.Column<string>(nullable: true)
    },
    constraints: table =>
    {
        table.PrimaryKey("PK_Foo", x => x.Id);
    });


Related

Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum