только знакомлюсь с 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. Просто прочитайте его от начала до конца, постепенно разбирая все примеры.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть коллекция в текстовом файлеПрикрепил её к приложению и пытаюсь прочитать
[![введите сюда описание изображения][1]][1]Есть 14 вариантов матрицы, для каждого варианта нужно придумать условия по которому матрица будет...
Есть приложение, в нем обрабатываются большие данные в цикле, если цикл идет достаточно долго то приложение зависает и не обновляется его...
Как в Windows forms можно отличить обычный запуск программы от запуска с правами администратора?