У меня есть datamodel в Entity Framework CodeFirst. Эта датамодель содержит объект Контракты, в котором содержится около полумиллиона записей, присутствующих в SQL Server. Субъект Контракта связан с другими лицами, прямо косвенно.Как оценить условие на большое количество записей базы данных
У меня теперь есть работа с бэкэнд, которая должна проверять все контракты для условия, и если это условие оценивается как true, оно должно выполнить некоторые действия по контракту. Проблема в том, что условие не так просто, что его можно поместить в предложение where where. Для оценки контракта мы должны проверить состояние нескольких объектов в иерархии Контракта. Условие оценивается как true для очень небольшой доли от общего количества Контрактов в базе данных.
Это означает, что мне нужно всего лишь загрузить небольшое количество Контрактов в памяти, но чтобы определить, какие из них мне нужно, чтобы все Контракты были оценены, поэтому, если я не хочу оценивать условие в базе данных (например, в хранимой процедуре), мне кажется, что мне нужно загрузить все Контракты в памяти.
Итак, кажется, что существует 2 очень субоптимальных решения: 1) Определите идентификаторы контракта контрактов, которые удовлетворяют условию в хранимой процедуре, а затем из кода извлекают только эти контракты. Это означало бы, что мы вводим логику в нашу базу данных, которая, как представляется, сначала противоречит всей философии кода. 2) Извлеките все контракты в памяти (частично по частям, например, в образцах 500) и оцените условие в коде. Разумеется, производительность не очень хорошая.
Мой вопрос в том, какие альтернативные пути были бы решены этой проблемой?
Если вы установили правила для выбора контрактов здесь, возможно, мы могли бы написать запрос linq, который вы можете использовать. –
Мы не можем принять это решение за вас. И я не уверен, что вы на самом деле спрашиваете. –