У меня есть следующая модель (конечно, анонимная, конечно), и я использую NPGSQL, чтобы поговорить с базой Postgres.
Код: Выделить всё
[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>
У меня есть этот запрос LINQ: < /p>
var company = await db.Companies
.Include(c => c.CompanyTypeMarker)
.FirstOrDefault(cc => cc.SerialNumber == serialNumber);
Просматривая вывод журнала, EF Core генерирует следующий SQL: < /p>
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>
Сгенерированный SQL является доказательством того, что EF Core поднимает свойство навигации, поскольку он генерирует правильное соединение SQL для правильных свойств ... просто когда он возвращается в C#, по какой -то причине он не поднимает и заполняет соединенные значения. Как отмечалось ранее, это работает в EF Core 1, и это похоже на довольно стандартное использование навигационных свойств.
Подробнее здесь: https://stackoverflow.com/questions/485 ... ded-entity
Мобильная версия