【发布时间】:2010-11-18 17:24:22
【问题描述】:
给定一个简单的 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(...) 方法(使用反射器)。
在此方法中,binding.Member.DeclaringType 的类型是 PocoAdapters.UserAdapter 类型(生成的),变量“type”的类型是 User 类型(POCO 类)。
所以...由于某种原因,事情变得混乱了。
有趣的是,如果我创建一个 MyUser 类,它是 poco 类 User 的精确副本,它可以正常工作,并且 ValidateMemberInitArgs(...) 中的两种类型都是 MyUser 类型。
任何人都可以重现该问题并阐明解决方案吗?
谢谢!
(项目讨论列表中相同问题的链接:http://code.msdn.microsoft.com/EFPocoAdapter/Thread/View.aspx?ThreadId=2138)
【问题讨论】:
标签: c# entity-framework poco efpocoadapter