sql >> Databasteknik >  >> RDS >> Sqlserver

Hur kan jag tvinga entitetsramverket att infoga identitetskolumner?

EF 6 metod, med hjälp av msdn-artikeln:

using (var dataContext = new DataModelContainer())
using (var transaction = dataContext.Database.BeginTransaction())
{
    var user = new User()
    {
        ID = id,
        Name = "John"
    };

    dataContext.Database.ExecuteSqlCommand("SET IDENTITY_INSERT [dbo].[User] ON");

    dataContext.User.Add(user);
    dataContext.SaveChanges();

    dataContext.Database.ExecuteSqlCommand("SET IDENTITY_INSERT [dbo].[User] OFF");

    transaction.Commit();
}

Uppdatering: För att undvika felet "Explicit värde måste anges för identitetskolumnen i tabellen 'TableName' antingen när IDENTITY_INSERT är inställt på ON eller när en replikeringsanvändare infogar i en INTE FÖR REPLIKATION identitetskolumn", bör du ändra värdet för StoreGeneratedPattern egenskap hos identitetskolumnen från Identitet till Ingen i modelldesigner.

Notera, att ändra StoreGeneratedPattern till None kommer att misslyckas med infogning av objekt utan specificerat id (normalt sätt) med felet "Kan inte infoga explicit värde för identitetskolumnen i tabellen 'TableName' när IDENTITY_INSERT är inställt på AV".



  1. java.sql.SQLException:Ingen lämplig drivrutin hittades för jdbc:microsoft:sqlserver

  2. Hur man filtrerar rader utan NULL i en kolumn

  3. Räkna rekord för varje månad under ett år

  4. Topp 5 PostgreSQL-frågeövervakningsverktyg