У меня есть представление, где один из соединенных столбцов имеет значение NULL, но часто является единственным отличительным элементом между двумя строками. Я вижу, что EF построил первичный ключ из всех элементов, не имеющих значения NULL в представлении. Я заметил, что когда я выхожу из представления, этот столбец с нулевым значением не всегда возвращается корректно, и я читаю, что он связан с тем, как он сопоставляется с ключом, и возвращает ту же строку, если видит ключ уже существует.Каков наилучший способ заставить EF возвращать все строки в виде?
В идеале лучшим решением было бы сделать мой столбец недействительным, но я не могу этого сделать, не вызывая больших проблем.
Другой идеей было использовать ROW_NUMBER()
для создания первичного ключа. Я не уверен, что это может вызвать подобные проблемы (если контекст не обновляется между вызовами, будет ли он полностью отключен от него или он достаточно умен, чтобы понять, что запросы разные?) Я также беспокоюсь о производительности, связанной с необходимостью использования ORDER BY
для функция и то, как это повлияет на динамическое упорядочение строк.
Каков наилучший способ гарантировать, что все мои строки будут возвращены точно так же, как они появляются через SQL-запрос с наименьшим ударом по производительности?
Спасибо ..
Пример:
view: A int, B int, C int?
SQL Results:
1, 2, null
1, 3, 10
1, 3, 11
EF вернет что-то вроде:
1, 2, null
1, 3, 10
1, 3, 10
Мне нужно получить, что 11 тоже.
Спасибо. Это был трюк, который я искал. Я нашел хорошую информацию о http://msmvps.com/blogs/kevinmcneish/archive/2010/02/16/setting-entity-framework-mergeoptions-what-works-what-doesn-t.aspx, чтобы заставить ее работать с моим сценарием. – emragins