только знакомлюсь с EF Core, так что не судите строго. Вообщем, у меня есть такая простенькая схема моего кластера.
Тут ClientId, CustomerId, ItemId просто ссылочные ключи.
Сама сущность выглядит так:
public class Order
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int OrderId { get; set; }
public DateTime Time { get; set; }
[ForeignKey("ClientId")]
public Client Client { get; set; }
[ForeignKey("CustomerId")]
public Customer Customer { get; set; }
[ForeignKey("ItemId")]
public Item Item { get; set; }
}
Так что по сути тут я должен (как я думаю) получать сущность Order, где все свойства инициализированы:
using (OrdersContext c = new OrdersContext())
{
await Task.Factory.StartNew(new Action(() =>
{
orders = c.Orders.Find(11);
}));
}
Но в итоге я получаю это:
Рабочий код вот, если что:
Так вот, у меня вопрос. Должен ли мне EF Core при подобном обращении к таблице-сущности (у которой есть ссылки ещё на другие сущности) возвращать инициализированные сущности в себе? Если что, в таблицах есть все записи, на которые ссылаются эти ключи в таблице Orders.
Вы можете включить LazyLoading либо явно сделать .Include() необходимых сущностей. Поищите информацию по LazyLoading, из того, что сам отвечал нашёл такую ссылку: Как использовать колекции в Entity Framework Core?
В целом я бы рекомендовал в вашем случае использовать Include:
return await c.Orders.Include(x => x.Customer).Include(x => x.Client).FindAsync(11);
А если я хочу вытащить ещё и в свойстве-сущности что-то
Не уверен, что правильно понял, но вот вам пример. Если бы у вас на диаграмме была бы у заказа к Company и у Company был бы MainPhone в отдельной сущности Phones то вы могли бы получить order с клиентами и телефонами так:
await c.Orders.Include(x => x.Company.MainPhone).Where(...
Вообще, я вам рекомендую почитать вот этот учебник по EF Core: https://metanit.com/sharp/entityframeworkcore/ -- там много ответов на достаточно простые вопросы по азам EF. Просто прочитайте его от начала до конца, постепенно разбирая все примеры.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости