私はEF 4とPOCOを使用する作業単位とリポジトリを持っています。 EFはSkip()とTake()を実行する前に順序付きセットが必要なので、レコードを取り出して動作しているかどうかを確認するために、単体テストを追加しました。「LINQ to Entitiesはエンティティデータモデルのプリミティブ型のみをキャストすることしかサポートしていません」と理解してください。
var myList = UOW.EntityRepo.Get(orderbyLambda: p => p.ID, page: 1, pageSize: 1);
この結果、orderbyLambda = {p => Convert(p.ID)}
の式が得られ、列挙中にエラーが発生します。 IDはtinyint
(Int16/short)です
これはなぜIDで注文できないのですか?エラー
Unable to cast the type 'System.Int16' to type 'System.Object'.
についての詳細は、私がExpression<Func<E, object>> orderbyLambda
EDITとしてorderbyLambdaを定義します。私はこれを行う場合
本当のキラーは次のとおりです。
orderbyLambda: p => new { p.ID }
それは動作します...どうして?
orderbyLambda:p => new {p.ID}は働いた...非常に興味深い... –
私はリポジトリAPIのOrderByを作るために同様の問題があった。 OrderByでbalkされたエンティティへのLINQ(e => e.SomeCollection.Count)。式をOrderBy(e => new {e.SomeCollection.Count})に変更することもまた私の仕事でした。 – danludwig
+1上記のolivehourのコメントに、これは私のためにも働いた。 – Beyers