EF4 возвращает неправильные значения при выборе из сводного представления - PullRequest
7 голосов
/ 30 марта 2012

Я использую EF4 для чтения данных из представления. Это сводное представление с группами по группам и т. Д., И оно доступно только для чтения - у него нет первичного ключа.Для того, чтобы импортировать его в EF4, я использовал часто предлагаемый трюк -ie, использующий ISNULL (столбец, -11) в качестве первого столбца в представлении.Это помогает EF4 выводить первичный ключ и импортировать представление.

Однако, когда я выбираю из представления в EF4, происходит очень странная вещь - я получаю неверные данные по сравнению с тем, когда я непосредственно выбираю из представления в Management studio.Я не мог поверить в это, поэтому я попытался несколько раз, и ошибка не исчезла.Просто чтобы убедиться, что я создал таблицу в SQL Server, выбрав все в представлении и получив доступ к таблице в EF4. Но затем возвращает правильные данные!

Представление не очень сложное, за исключением того, что это сводное представление(группировка по соединениям) и использует табличное выражение SQL (т. е. предложение with).

When I select straight in database using select * from vw_responserate I get 

coltext       SurveyId  rowtext1    rowtext2            cnt
Anwender    2   Angestellte/r   Französische Schweiz    1
Anwender    2   Angestellte/r   Italienische Schweiz    1
IT Spezialist   2   Angestellte/r   Deutsche Schweiz    1
IT Spezialist   2   Mittleres Management / Senior Management    Italienische Schweiz    1

When I select from EF4 I get

coltext rowtext1 rowtext2 cnt
Anwender      Angestellte/r Französische Schweiz 1
Anwender      Angestellte/r Französische Schweiz 1
IT Spezialist Angestellte/r Deutsche Schweiz 1
IT Spezialist  Angestellte/r Deutsche Schweiz 1

Любая помощь приветствуется

спасибо

1 Ответ

14 голосов
/ 11 апреля 2012

У меня была та же проблема, проблема в том, что ключ, определенный для представления, не уникально идентифицирует единственную строку.

Глядя на примеры данных, ваша проблема должна быть решена путем установки в качестве ключа coltext, rowtext1 и rowtext2.

Это можно сделать через дизайнер, щелкнув правой кнопкой мыши каждое свойство и выбрав «Ключ сущности».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...