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.
* Jedes Mal, Ich versuche, ein damit verbundenes Ziel * zu erhalten - also den Code zeigen, wo Sie das tun. –
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. –
@Aaron, ja, und es ist das richtige Projekt ID –