EF 4 を使用してビューから行を選択しています。ビューからの単純な選択操作です。VS 2010 によって生成された edmx のストレージ スキーマには、複数の主キーがあることが示されていますが、これは問題ありません。私が提供している条件は、ProductId が同じかどうかを確認することです。コードは次のようになります。
var returnedResult=ctx.vw_MyProductList.Where(x=>x.ProductName.Equals(suppliedProductId, StringComparision.OrdinalIgnoreCase)).ToList();
条件に一致するビューには 2 つのレコードがあります。期待していた 2 つのレコードが返されます。しかし問題は、同じ最初のレコードを 2 回返すことです。フレームワークは 2 つのレコードがあることを認識しているように見えますが、行のどこかで最初のレコードを次のレコードにコピーして返します。
SQL プロファイラーをチェックインし、それをコピーして SQL-Server Mgmt Studio で実行したところ、期待どおりに行が正しく返されました。
私が何か間違ったことをしていない限り、それは私には意味がありません。.edmx を削除して最初からやり直しましたが、うまくいきませんでした。これは、ビューに対する単なる選択ステートメントです。
ビューに対する EF のステートメントの扱いが少し異なるようですね。