sql >> Database >  >> RDS >> Sqlserver

Hoe kan ik het entiteitsraamwerk dwingen om identiteitskolommen in te voegen?

EF 6 methode, met behulp van het msdn-artikel:

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

Bijwerken: Om de fout "Expliciete waarde moet worden opgegeven voor identiteitskolom in tabel 'TableName' ofwel wanneer IDENTITY_INSERT is ingesteld op AAN of wanneer een replicatiegebruiker invoegt in een NOT FOR REPLICATION identiteitskolom", moet u de waarde van StoreGeneratedPattern eigenschap van identiteitskolom van Identiteit naar Geen in modelontwerper.

Let op, het wijzigen van StoreGeneratedPattern naar Geen zal het invoegen van een object zonder gespecificeerde id (normale manier) mislukken met de fout "Kan geen expliciete waarde voor identiteitskolom in tabel 'TableName' invoegen wanneer IDENTITY_INSERT is ingesteld op OFF".



  1. Hoe Tablespace in Oracle SQL Developer te controleren?

  2. SQLite IN

  3. Een MySQL-queryresultaat opslaan in een .CSV-bestand

  4. Een lijst maken van alle opgeslagen procedures in Oracle Database