3

私は次のコードを使用します:

List<vw_GetIMeasurements> Imeasurements = context.vw_GetIMeasurements.Where(f => f.MEMBERID == userID).Distinct().ToList();

これにより、12個の値が含まれるリストが返されますが、これらの値は常に同じです(DBにない場合でも)(異なる場合でも、これを解決する必要があります)

問題のビジュアル

DB:

データベース画像

返される生の値も間違っています。この問題の原因は何で、どうすれば解決できますか?

4

4 に答える 4

8

私は以前にこの問題を抱えていました-ビューに一意のセットがないことが判明しましたentity keys-エンティティフレームワークによって自動作成されたビューの主キーが実際に一意であることを確認してください...

于 2012-07-17T12:42:39.857 に答える
2

同様の問題がありました。SQLサーバーではデータベースビューは正常に見えましたが、デバッグ時に、行が特定の属性値を共有している場所に重複する行が表示されていました。

重要な一意キーの1つは、外部結合テーブルからのものであることがわかりました。したがって、nullになる可能性があり、モデルは一意として割り当てられていませんでした。

このフィールドをISNULL(field、'')に設定することでこの問題を修正できました-値が常に返されるようにします-更新すると、モデルはフィールドを一意であり、複合キーと行の一部として正しく解釈します正しく返されました。

ビューのデザインに問題があると主張する人もいるかもしれませんが(つまり、外部結合を使用するべきではありません)、この場合、外部結合が特に必要でした。「」が複数回返された場合でも、複合キーは一意であるため、修正は機能します。

于 2012-10-22T11:18:55.603 に答える
0

問題は、実際にはリチャードが説明したことです。ただし、正しい「一意のキー」を選択できなかったため、さらに問題が発生しました。

カスタムメイドのクラスを作成し、これをSQLで作成することで、問題を解決しました。また、Selectを3列のうち2列に制限しました。

List<Measurement> result = (from f in context.vw_GetIMeasurements where f.MEMBERID == userID select new Measurement { Category = f.atcmCATEGORYCODEID, Size = f.imMeasurementNumber }).ToList();

測定は自作クラスの場合です。

于 2012-07-17T13:15:33.507 に答える
0

たぶん、このようなもっと単純な構文を試してみてください

var measure = from f in context.vw_GetIMeasurements
              where  f.MEMBERID == userID
              select f;

この種のことは私のために働いています。

于 2012-07-17T12:25:14.047 に答える