@embiid

Как сделать проверку на две сущности?

Есть две сущности => City и AlternativeCity.
Сейчас код работает только на проверку в City сущности
var city = await ctx.City.SingleOrDefaultAsync(x => x.CountryId == country.Id)


Как сделать условие если нет такого в City, то искать в AlternativeCity? А если и там и там нет, то ошибка?
  • Вопрос задан
  • 60 просмотров
Пригласить эксперта
Ответы на вопрос 2
@oleg_ods
Не видя самих сущностей сложно что-то советовать. Но их поля идентичны, то можно попробовать поместить их в одну таблицу и добавить булевое поле IsAlternative. Дальше запрашивать все города и сортировать их по полю IsAlternative и брать первый из них. Таким образом если есть основной город вы получите его, если основного нет получите альтернативный, если null обрабатываете ошибку.

Если сущности по структуре различаются почитайте про ef core inheritance, возможно это то что вам нужно.
Ответ написан
Комментировать
Griboks
@Griboks Куратор тега C#
Ну, если вы хотите избавиться от строчек кода, то вы можете свернуть их в одну, используя второй аргумент (defaultValue), например (могу напутать с async/await):
ICity city = await ctx.City.SingleOrDefaultAsync(x => x.CountryId == country.Id, await ctx.AlternativeCity.SingleOrDefaultAsync(x => x.CountryId == country.Id));

Если сущности имеют общий родительский интерфейс (должны в теории), то желательно использовать его.
Также, есть вероятность, что эта версия будет тяжелее из-за вычисления значения по умолчанию.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы