Code: Select all
[Table("company")]
public class Company
{
[Key, Column("id")]
public int Id { get; set; }
[Column("name", TypeName = "VARCHAR")]
public string Name { get; set; }
[Column("serialnumber")]
public int SerialNumber { get; set; }
[ForeignKey("serialnumber")]
public virtual CompanyTypeMarker CompanyTypeMarker { get; set; }
}
[Table("companytypemarker")]
public class CompanyTypeMarker
{
[Key, Column("serialnumber"), DatabaseGenerated(DatabaseGeneratedOption.None)]
public int SerialNumber { get; set; }
[Column("sitetype")]
public CompanyType CompanyType { get; set; } = CompanyType.Customer;
}
< /code>
Ich habe diese Linq -Abfrage: < /p>
var company = await db.Companies
.Include(c => c.CompanyTypeMarker)
.FirstOrDefault(cc => cc.SerialNumber == serialNumber);
In dotnetcore2.0, the Company entity loads, but the Company.CompanyTypeMarker Entität ist null. SELECT "c"."id", "c"."name", "c"."serialnumber", "c.CompanyTypeMarker"."serialnumber", "c.CompanyTypeMarker"."companytype"
FROM "company" AS "c"
INNER JOIN "companytypemarker" AS "c.CompanyTypeMarker" ON "c"."serialnumber" = "c.CompanyTypeMarker"."serialnumber"
WHERE "c"."serialnumber" = @__SerialNumber_0
LIMIT 1
< /code>
Der generierte SQL ist ein Beweis dafür, dass EF Core die Navigationseigenschaft aufnimmt, da er den richtigen SQL -Join für die richtigen Eigenschaften generiert ... nur dass es bei C#, wenn es wieder in C#kommt, aus irgendeinem Grund, was ich nicht aufnimmt und die angeschlossenen Werte bevölkert. Wie bereits erwähnt, funktioniert dies in EF Core 1, und es scheint eine ziemlich Standard -Verwendung von Navigationseigenschaften zu sein.
Mobile version