Entity Framework 7 IDENTITY_INSERT

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

Domanda

Ho bisogno di memorizzare una grande quantità di dati utente in un database in cui ogni utente ha già un ID come chiave. Tuttavia, questi utenti sono tutti fuori da un gruppo più ampio di utenti, pertanto l'ID non aumenta e non può essere generato automaticamente. Devo essere in grado di impostare manualmente l'ID.

C'è un modo semplice per farlo?

Risposta accettata

Ho fatto alcuni test e questo sembra funzionare per me su EF 7.0.0 rc1-final:

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

Il mio codice di prova:

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}");
    }
}

(codice completo del programma qui: http://pastebin.com/hSs9HZCP )

Inserisce e recupera correttamente un record con l'id specificato e la tabella ha la chiave primaria corretta specificata.

Questo è il codice di migrazione generato:

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);
    });



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché