1

Я использую сущность model.i обновил один вид под названием SalesDetialView.Не печатать повторяющиеся значения, используя представление в модели сущности

В salesdetialview у меня есть 3 сущности. Есть 1.Type 2.No, 3.Custmor enter image description here

SQL: Я использую этот запрос (я печать всего 5 столбцов)

выберите клиента, тип, нет, Salesperson, сумма от SalesDetailView enter image description here

Но через модель объекта я не получаю повторяющиеся значения (нет) .Увидь это внизу экрана enter image description here

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

+0

Какой запрос выбрал EF? –

ответ

1

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

the correct result should be: 

A, 1 
A, 2 
B, 4 
B, 6 
B, 7 
C, 5 


The actual result in code with Entity Framework would become: 


A, 1 
A, 1 
B, 4 
B, 4 
B, 4 
C, 5 

При включении вида в Entity Model, модель, кажется, просто использовать первый не-Nullable столбцы первичный ключ (поскольку все столбцы, используемые в первичном ключе, должны быть недействительными). Чтобы устранить проблему, убедитесь, что столбцы первичного ключа выбраны правильно. Если вы не можете создать правильный первичный ключ из-за нулевых значений или просто не иметь набора столбцов, который отличается для каждой строки, попробуйте добавить столбец к вашему представлению, который всегда содержит уникальное значение для каждой строки. После того, как вы добавите его, убедитесь, что он установлен как первичный ключ в вашей модели Entity.

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

+0

используя первичный столбец, мы не показываем дубликаты. Но, на мой взгляд, в нем нет столбцов pk. при запуске quary в sql он отображает все строки. Но не через сущность модели. – Kavitha

1

вы можете решить эту проблему, изменив опцию слияния ObjectSet. Пример:

using (TargetDBDataContext db = new TargetDBDataContext()) 
     { 
      db.SomeView.MergeOption = System.Data.Objects.MergeOption.NoTracking; 
      return db. SomeView.ToList(); 
     } 
Смежные вопросы