Несоответствие результатов структуры сущностей для представлений базы данных - PullRequest
16 голосов
/ 24 июня 2010

У меня есть одно конкретное представление, созданное в моей БД (объединяет около 5-6 таблиц с левым соединением). Это представление добавляется в мой edmx (Entity Framework 1.0). Недавно я заметил, что одна из записей столбцов, полученных с использованием edmx (linq to entity, а затем ToList ()), дублировалась несколько раз, хотя в представлении базы данных они отличались

Column-N (Expected result/ result from DB view)
---------
data1
data2
data3
data4
data5

Column-N(Actual result generated by entity framework)
---------
data1
data1
data1
data1
data1

Я запустил свой профилировщик SQL, получил запрос, который мое приложение отправило на SQL Server, запустил его, и он вернул мне ожидаемый результат.

MSDN имеет аналогичный пост здесь и здесь , но модератор не уточнил, как решить эту проблему. Мой ключ - GUID

Первопричину, на которую вы указали, я думаю, правильно, проблема на EF на стороне приложения, так как EF имеет различные правила сопоставления объектов с база данных. когда результаты запроса имеют был возвращен из базы данных, EF сделает отображение на приложении память в соответствии с собственной разработкой логика.

Важно принять эту логику во внимание, когда вы разрабатываете просмотреть запрос в вашей стороне базы данных. я думаю, что вы должны сделать некоторые корректировки на Ваш запрос на просмотр.

Я не уверен, что вы отсортировали проблема, если нет, пожалуйста, укажите структура базы данных, связанная с этим вопрос и вид запроса у вас есть написано.

Спасибо, Бинце

Кто-нибудь сталкивался с подобной проблемой раньше?

Ответы [ 2 ]

18 голосов
/ 24 июня 2010

Проблема на самом деле с ключом. Вы должны: а) иметь уникальный идентификатор для каждой строки в представлении. и б) сопоставить этот ключ соответственно в EDMX. В противном случае, как говорится в вашей цитате, логика отображения будет видеть каждую последующую строку и показывать, что может использовать тот же экземпляр объекта, который был возвращен до

.
0 голосов
/ 18 октября 2013

Та же проблема для меня. Entity View (VReport) был автоматически сгенерирован из мастера VS2010 в нечто вроде:

class VReport
Line: int (key) 
Desc: string 
Date: DateTime

Когда я получил записи из базы данных, SQL-запрос был сформирован правильно и возвратил ожидаемые (и отличные) результаты, но Entity Framework вместо этого вернул много дублированных записей.

Но вместо этого столбец / поле Дата также должны участвовать в формировании КЛЮЧ сущности

Итак, чтобы решить эту проблему, я изменил свойство поля с Ключ сущности : false -> true

class VReport
Line: int (key) 
Desc: string 
Date: DateTime (key)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...