Подтвердить что ты не робот

Различие результатов структуры объекта для представлений базы данных

У меня есть одно конкретное представление, созданное в моей базе данных (объединяет около 5-6 таблиц с левым соединением). Это представление добавляется в мой edmx (entity framework 1.0). Недавно я заметил, что одна из записей столбцов, полученных с использованием edmx (linq для сущностей, а затем 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 будет делать сопоставление по заявке памяти в соответствии со своими собственными логика.

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

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

Спасибо Binze

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

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

Но вместо этого также поле столбца Date должно было бы partecipate в образовании Entity KEY

Итак, чтобы решить эту проблему, я изменил свойство поля из Entity Key: false → true

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