Vorrei aggiungere i record in blocco a una tabella con gli ID specificati in modo da poter creare una gerarchia per la visualizzazione dei record in modalità vista struttura. Posso aggiungere singolarmente i record che funzionano bene e non ho impostato l'ID. Vorrei impostare gli ID solo in blocco, quindi ho impostato l'opzione DatabaseGenerated
come None
nella colonna id per la mia entità come None
.Entity Framework 4.2, Impossibile impostare Identity Insert ON
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew))
{
foreach (ErrorCode ec in errorCodesStep3.errorcodesUsers)
{
errorCode.ID = ec.ID;
errorCode.ParentID = ec.ParentID;
errorCode.ErrorDescription = ec.ErrorDescription;
db.Database.ExecuteSqlCommand("SET IDENTITY_INSERT dbo.ErrorCode ON");
db.ErrorCode.Add(errorCode);
db.SaveChanges();
scope.Complete();
}
}
CodiceErrore
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int ID { get; set; }
sto ottenendo l'errore che:
Non è possibile impostare identità quando inserimento di identità è OFF.
Non so che cosa sia sbagliato, dal momento che ho visto esempi che l'inserimento di identità può essere acceso. Uso la versione 4.2.0.0 di EF e la versione di runtime v4.0.30319. Posso facilmente aggiungere un'istruzione INSERT tramite executeSQL
con variabili parametrizzate, ma mi piacerebbe farlo con l'entity framework. Sembra che db.Database.ExecuteSqlCommand
sia in un ambito separato e sia stato chiuso immediatamente e non sia disponibile quando viene eseguito db.savechanged
.
Questa domanda è stato chiesto e ha risposto prima di http://stackoverflow.com/questions/13086006/how-can-i-force-entity-framework-to-insert-identity-columns http://stackoverflow.com/questions/4998948/identity-insert-on-not-being-respected-for-entity-framework-dbset-add-method –