Проблема с несколькими полями EF Core FluentAPI ⇐ C#
-
Гость
Проблема с несколькими полями EF Core FluentAPI
Я унаследовал некоторый код, который теперь вызывает проблему w. Код выглядит примерно так (хотя и отредактировано).
публичный класс ObjectX { общедоступный идентификатор Guid {get; набор; } общественный List ListOfY {get; набор; } } общественный класс ObjectY { общедоступный идентификатор Guid {get; набор; } общественный ObjectX MyX {получить; набор; } общественный ObjectZ MyZ {получить; набор; } } публичный класс ObjectZ общественный Guid ObjectXId {получить; набор; } общественный Guid ObjectYId {получить; набор; } общественный ObjectX MyX {получить; набор; } общественный ObjectY MyY {получить; набор; } } Чтобы внести ясность,
[*]ObjectX содержит коллекцию ObjectY [*]ObjectY содержит экземпляры ObjectZ и ObjectX [*]ObjectZ содержит экземпляры ObjectX и ObjectY
ModelBuilder имеет следующее:
modelBuilder.Entity .HasIndex(p => new { p.ObjectXId, p.ObjectYId}) .IsUnique(); указывает, что ObjectX и ObjectY уникальны как пара, но могут появляться в разных комбинациях.
Используемый запрос
var что-то = context.ObjectX .Where(x => x.Id = ) .Include(y => y.ListOfY) .ThenInclude(z => z.MyZ) .SingleOrDefault(); Проблема, с которой я столкнулся, заключается в том, что хотя функция thenInclude успешно извлекает первый ObjectZ, соответствующий ObjectY.Id, она не учитывает ObjectX.Id.
Есть ли способ скорректировать запрос, определения Fluent или другие аспекты, чтобы гарантировать, что ObjectX возвращается со списком ObjectY, где ObjectY.MyZ соответствует как ObjectXId, так и ObjectYId?
Я признаю, что текущее состояние структуры базы данных и других связанных компонентов может быть неоптимальным, но, как упоминалось ранее, я унаследовал эту настройку.
Я унаследовал некоторый код, который теперь вызывает проблему w. Код выглядит примерно так (хотя и отредактировано).
публичный класс ObjectX { общедоступный идентификатор Guid {get; набор; } общественный List ListOfY {get; набор; } } общественный класс ObjectY { общедоступный идентификатор Guid {get; набор; } общественный ObjectX MyX {получить; набор; } общественный ObjectZ MyZ {получить; набор; } } публичный класс ObjectZ общественный Guid ObjectXId {получить; набор; } общественный Guid ObjectYId {получить; набор; } общественный ObjectX MyX {получить; набор; } общественный ObjectY MyY {получить; набор; } } Чтобы внести ясность,
[*]ObjectX содержит коллекцию ObjectY [*]ObjectY содержит экземпляры ObjectZ и ObjectX [*]ObjectZ содержит экземпляры ObjectX и ObjectY
ModelBuilder имеет следующее:
modelBuilder.Entity .HasIndex(p => new { p.ObjectXId, p.ObjectYId}) .IsUnique(); указывает, что ObjectX и ObjectY уникальны как пара, но могут появляться в разных комбинациях.
Используемый запрос
var что-то = context.ObjectX .Where(x => x.Id = ) .Include(y => y.ListOfY) .ThenInclude(z => z.MyZ) .SingleOrDefault(); Проблема, с которой я столкнулся, заключается в том, что хотя функция thenInclude успешно извлекает первый ObjectZ, соответствующий ObjectY.Id, она не учитывает ObjectX.Id.
Есть ли способ скорректировать запрос, определения Fluent или другие аспекты, чтобы гарантировать, что ObjectX возвращается со списком ObjectY, где ObjectY.MyZ соответствует как ObjectXId, так и ObjectYId?
Я признаю, что текущее состояние структуры базы данных и других связанных компонентов может быть неоптимальным, но, как упоминалось ранее, я унаследовал эту настройку.
Мобильная версия