この動作は、モデル クラスの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 を持つすべての行から最初の行のみを取得する) とマークされたフィールドによって結果を「区別」するために発生します。これは、すべての行に対して一意である必要があるためです。
解決
重複する値 (BookId) を持つフィールドから属性を削除Key
し、すべての行に一意の値を持つフィールドに設定します (Uniqe になる 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
その後、クエリによって返されたすべての行が表示されます。お役に立てれば :)