Такое поведение может быть вызвано неправильным набором атрибута Key в классе вашей модели. Если в результате запроса строки с полем Key будут продублированы, DataGrid займет только первое место.
Пример (информация о книжном магазине):
Ваш класс результатов (BookPriceInfo.cs) выглядит следующим образом:
public class BookPriceInfo {
[DataMember]
[Key]
public int BookId { get; set; }
[DataMember]
public string Name {get; set; }
[DataMember]
public string StoreName {get; set;}
[DataMember]
public decimal Price {get; set;}
}
И если у вас есть результат запроса, возвращенный из базы данных:
BookId | Name | StoreName | Price
1 | book1 | store1 | 70.00
1 | book1 | store2 | 69.99
2 | book2 | store1 | 40.00
2 | book2 | store2 | 39.99
Тогда DataGrig покажет только это:
BookId | Name | StoreName | Price
1 | book1 | store1 | 70.00
2 | book2 | store1 | 40.00
это происходит из-за того, что DataGrid будет «различать» результаты по полю, помеченному как Key
(получать только первую строку из всех строк с одинаковым BookId), поскольку он должен быть уникальным для всех строк.
Решение
Удалите атрибут Key
из поля, которое будет иметь повторяющиеся значения (BookId), и установите его в поле, которое будет иметь уникальные значения для всех строк (вы можете добавить некоторый столбец, например BookPriceId, который будет уникальным).
public class BookPriceInfo {
[DataMember]
public int BookId { get; set; }
[DataMember]
public string Name {get; set; }
[DataMember]
public string StoreName {get; set;}
[DataMember]
public decimal Price {get; set;}
[DataMember]
[Key]
public int BookPriceId {get; set;}
}
Результат запроса:
BookPriceId | BookId | Name | StoreName | Price
1 | 1 | book1 | store1 | 70.00
2 | 1 | book1 | store2 | 69.99
3 | 2 | book2 | store1 | 40.00
4 | 2 | book2 | store2 | 39.99
После этого вы должны увидеть все строки, возвращаемые запросом.
Надеюсь, это поможет:)