-1

Jedes Mal, wenn ich versuche, ein verwandtes Objekt zu erhalten ich Fehler bekommenASP.NET Core-Entity Framework Zusammenhang erhalten Datenobjekt

Objektverweis nicht auf eine Instanz eines Objekts

Relevante Code :

public class Project 
{ 
    public int ProjectId { get; set; } 
    public string ProjName { get; set; } 
    public string Description { get; set; } 
    public virtual List<Developer> MyDevs { get; set; } 
} 

public class Developer 
{ 
    public string Name { get; set; } 
    public string Skills { get; set; } 
    public string Email { get; set; } 
    public virtual Project MyProj { get; set; } 
} 

//define relationship using fluent api, under AppDbContext 
modelBuilder.Entity<Developer>() 
.HasOne(d => d.MyProj) 
.WithMany(p => p.MyDevs) 
.HasForeignKey("ProjectForeignKey"); 

Add-Migration und Update-Datenbank geben keinen Fehler, aber ich bin nicht in der Lage, die myDev Spalte in der Tabelle Projekt zu finden. Ich kann die myProj-Spalte in der Developer-Tabelle auch nicht finden, nur die Fremdschlüsselspalte.

Wenn Sie die folgende Startmethode ausführen, werden der Datenbank wie erwartet ein Projekt und ein Entwickler hinzugefügt.

public static void Seed(IApplicationBuilder applicationBuilder) 
{ 
    AppDbContext context = applicationBuilder.ApplicationServices.GetRequiredService<AppDbContext>(); 
    Project ProjA = new Project { ProjName = "handyApp", Description = "a dummy Project" }; 
    context.Project.Add(projA); 
    Developer FirstDev = new Developer { UserName = "John Smith", Skills = "C#", Email = "[email protected]", MyProj = ProjA}; 
    context.Developer.Add(FirstDev); 
    context.SaveChanges(); 
} 

Dann die Ausführung des folgenden Codes trifft die Ausnahme "Objektreferenz nicht auf eine Instanz eines Objekts festgelegt".

Developer Dev = context.Devs.Find(1); 
string name = Dev.MyProj.ProjName; //put a break point here, the dubugger tells me Dev.MyProj is null 

Bitte kann jemand helfen zu identifizieren, was mit meiner Beziehung Definition falsch ist.

+0

* Jedes Mal, Ich versuche, ein damit verbundenes Ziel * zu erhalten - also den Code zeigen, wo Sie das tun. –

+0

Die Beziehung * Definition * ist in Ordnung. Sie müssen jedoch EF auffordern, die Navigationseigenschaft zu laden (aufzufüllen). Siehe [Laden verwandter Daten] (https://docs.microsoft.com/en-us/ef/core/querying/related-data) Dokumentationsthema. –

+0

@Aaron, ja, und es ist das richtige Projekt ID –

Antwort