实体框架 - 无法创建类型为"系统.对象"的常量值。在此上下文中仅支持基元类型("Int32、字符串和 Guid")



我正在使用MVC和实体框架。 我用下面的代码在我的模型文件夹中创建了一个类。 我不断收到上面的错误消息,其中包含下面的两个查询。 我知道引用非标量变量存在已知问题,但我不确定如何实施解决方法:

http://msdn.microsoft.com/en-us/library/bb896317.aspx#Y1442

private MovieLibraryDBEntities movieLibraryDBEntitiesContext;
public int getNumberOfEntriesReserved()
{
    return (from m in movieLibraryDBEntitiesContext.Movies
            where m.CheckedOut.Equals(1)
            select m).Count();
    //return movieLibraryDBEntitiesContext.Movies
    //  .Where(e => e.CheckedOut.Equals(1))
    //  .Select (e => e.Title).Count();
}
不能

在 linq-to-entity 查询中使用m.CheckedOut.Equals(1)。使用m.CheckedOut == 1CheckedOut必须integer

这是一个

较老的问题。尝试使用 IQueryable 接口过滤可为空的列时,我遇到了同样的问题。我通过首先检查对象是否有值,然后检查值来解决问题。

widgets = widgets.Where(x => x.ID.HasValue.Equals(true) &&  x.ID.Value.Equals(widgetID));

使用Any()时遇到同样的问题我不得不更改我的 where 子句来搜索基元类型,对我来说 int

所以这个

where order.User == user

变成这个

where order.User.UserId == user.UserId

有一篇博客文章解释了这个怪癖。

最新更新