给定一个简单的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’类型的成员
..。它来自方法ValidateMemberInitArgs(...)从System.Linq.Expressions.Expression (使用反射器)。
所以..。出于某种原因,它把事情搞混了。
有趣的是,如果我创建了一个与poco类User完全相同的MyUser类,它可以很好地工作,并且两种类型都在ValidateMemberInitArgs(...)都属于MyUser类型。
有人能重现这个问题并阐明解决方案吗?
谢谢!
(链接到项目讨论列表中的相同问题:http://code.msdn.microsoft.com/EFPocoAdapter/Thread/View.aspx?ThreadId=2138)
发布于 2009-08-12 08:17:30
我认为问题在于User类是如何被解决的。
是否会发生相同的错误?
var user = context.User.Select(u => new User { Id = u.Id }).FirstOrDefault();会变成
var user = context.User.Select(u => new PocoUser { Id = u.Id }).FirstOrDefault();HTH,
丹
发布于 2010-10-30 14:24:18
我想我知道为什么会这样了。
MsSql允许在表名中使用大写字母,但MySql不允许。因此,如果您从表名中包含大写字母的mssql实体模型创建poco适配器,并使用它来查询mysql数据库,您将得到这种类型的错误。
为了解决这个问题,我将我的表重命名为全小写。
https://stackoverflow.com/questions/1262089
复制相似问题