次のような単純な POCO クラスがあるとします。
public class User { public int Id { get; set; } public string Name { get; set; } public string Password { get; set; } }
次のように、それ自体への射影を使用してクエリを実行すると、次のようになります。
using (var context = new Context())
{
var user = context.User.Select(u => new User { Id = u.Id }).FirstOrDefault();
}
...私は得る:
未処理の例外: System.ArgumentException: 'Id' は型 'ORMTest1Model.Users' のメンバーではありません
... System.Linq.Expressions.Expression のメソッド ValidateMemberInitArgs(...) に由来します (Reflector を使用)。
このメソッドでは、binding.Member.DeclaringType からの型は PocoAdapters.UserAdapter (生成されたもの) 型であり、変数 "type" からの型は User (POCO クラス) 型です。
ということで・・・何故か混み合っています。
興味深いことに、poco クラス User の正確なコピーである MyUser クラスを作成すると、正常に動作し、ValidateMemberInitArgs(...) の両方の型が MyUser 型になります。
誰でも問題を再現し、解決策に光を当てることができますか?
ありがとう!
(プロジェクトのディスカッション リストの同じ質問へのリンク: http://code.msdn.microsoft.com/EFPocoAdapter/Thread/View.aspx?ThreadId=2138 )