Ho un'applicazione ASP.NET MVC 5 che utilizza Entity Framework 6.2. Questa app crea alcuni record nel server MS SQL.
Devo elaborare questi record nella funzione lambda di AWS. A tale scopo, ho creato la funzione lambda c # .NET Core v2.0. Lì generi i modelli dal DB esistente come descritto nel prossimo articolo: Introduzione a EF Core su ASP.NET Core con un database esistente .
I modelli generati assomigliano a:
public partial class Request
{
public int EntityId { get; set; }
public Result Result { get; set; }
}
public partial class Result
{
public int EntityId { get; set; }
public Request Entity { get; set; }
}
E OnModelCreating:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Request>(entity =>
{
entity.HasKey(e => e.EntityId);
entity.ToTable("Request", "mySchema");
});
modelBuilder.Entity<Result>(entity =>
{
entity.HasKey(e => e.EntityId);
entity.ToTable("Result", "mySchema");
entity.HasIndex(e => e.EntityId).HasName("IX_EntityId");
entity.Property(e => e.EntityId).ValueGeneratedOnAdd();
entity.HasOne(d => d.Entity)
.WithOne(p => p.Result)
.HasForeignKey<Result>(d => d.EntityId)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("FK_mySchema.Result_mySchema.Request_EntityId");
});
}
Nella funzione lambda, sto elaborando una richiesta e il risultato dell'impostazione:
using (var db = new DataContext(connection))
{
var request = db.Request.First();
request.Result = new Result();
db.SaveChanges();
}
Nell'operazione di salvataggio ho ottenuto l'eccezione:
Impossibile inserire il valore esplicito per la colonna Identity nella tabella "Result" quando IDENTITY_INSERT è impostato su OFF.
Ho controllato un modo diverso per risolvere questo problema. Ma esiste già ValueGeneratedOnAdd
funzione ValueGeneratedOnAdd
nel metodo di creazione del modello.
Inoltre, ho provato ad aggiungere [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
a Result.EntityId - senza alcun successo.
Cosa mi sono perso nella mia implementazione?
Stai tentando di inizializzare la richiesta.Risultati con il nuovo risultato () che non ha valori. Ciò potrebbe causare questo errore.