EF7 beta5: Fehler beim Einfügen der untergeordneten Entität

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

Frage

Ich habe eine API mit ASP.NET5 und Entity Framework 7.0.0-Beta 5 erstellt.

Ich habe das Modell, DbContext und das Repository erstellt , wie beschrieben wird hier , und wenn ich versuche , Daten mit einer untergeordneten Entität einzufügen meine app eine Ausnahme werfen:

"Der Wert NULL kann nicht in die Spalte 'Status', Tabelle 'Firma' eingefügt werden; die Spalte erlaubt keine Nullwerte. INSERT schlägt fehl."

Code + Ausnahme

Das Statusattribut ist in meiner Company-Entität nicht null, aber ich weiß nicht, warum EF nicht in der Lage ist, den Wert der untergeordneten Entität einzufügen. (in diesem Fall "1")

Dies ist der Stack-Trace:

   at Microsoft.Data.Entity.Relational.Update.ReaderModificationCommandBatch.Execute(RelationalTransaction transaction, IRelationalTypeMapper typeMapper, DbContext context, ILogger logger)
   at Microsoft.Data.Entity.Relational.Update.BatchExecutor.Execute(IEnumerable`1 commandBatches, IRelationalConnection connection)
   at Microsoft.Data.Entity.Relational.RelationalDataStore.SaveChanges(IReadOnlyList`1 entries)
   at Microsoft.Data.Entity.ChangeTracking.Internal.StateManager.SaveChanges(IReadOnlyList`1 entriesToSave)
   at Microsoft.Data.Entity.ChangeTracking.Internal.StateManager.SaveChanges(Boolean acceptAllChangesOnSuccess)
   at Microsoft.Data.Entity.DbContext.SaveChanges(Boolean acceptAllChangesOnSuccess)
   at Microsoft.Data.Entity.DbContext.SaveChanges()
   at **.Data.Repositories.CompanyRepository.Create(Company company) in D:\**.Data\Repositories\CompanyRepository.cs:line 36
   at **.API.Controllers.CompanyController.Create(Company company) in D:\**.API\Controllers\CompanyController.cs:line 48

Hier ist der Code:

DbContext

public class MrBellhopContext : DbContext
{

    public DbSet<Company> Company { get; set; }
    public DbSet<CompanyStatus> CompanyStatus { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Company>().Table("Company");
        modelBuilder.Entity<Company>().Key(c => c.CompanyId);
        modelBuilder.Entity<Company>().Index(c => c.Name);
        modelBuilder.Entity<Company>().Reference(c => c.Status).InverseReference().ForeignKey<CompanyStatus>(cs => cs.StatusId);

        modelBuilder.Entity<CompanyStatus>().Table("CompanyStatus");
        modelBuilder.Entity<CompanyStatus>().Key(cs => cs.StatusId);

        base.OnModelCreating(modelBuilder);
    }

}

Modell

public class Company
{

    public int CompanyId { get; set; }

    public string Name { get; set; }

    public string Email { get; set; }

    public CompanyStatus Status { get; set; }

    public DateTime CreatedAt { get; set; }

    public DateTime UpdatedAt { get; set; }

}

public class CompanyStatus
{

    public int StatusId { get; set; }

    public string Name { get; set; }

}

Repository (nur Methode erstellen)

    public int Create(Company company)
    {
        _dbcontext.Add(company);
        _dbcontext.SaveChanges();

        return company.CompanyId;
    }

Weiß jemand, wie man untergeordnete Entitäten korrekt einfügt?

Beliebte Antwort

In EF7 müssen Sie Ihr untergeordnetes Objekt in den Kontext eingebunden haben. Das ist anders als bei EF6, und ich bin mir ziemlich sicher, das Szenario, dem Sie gegenüberstehen. Versuchen Sie, das Objekt vor dem Speichern an dbcontext anzuhängen.

passiert mit mir, lesen Sie diese Ausgabe: https://github.com/aspnet/EntityFramework/issues/2387 für weitere Informationen.



Related

Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow