C# 仅初始值设定项、实体成员(…)。无法对特定列执行Where()操作

C# 仅初始值设定项、实体成员(…)。无法对特定列执行Where()操作,c#,entity-framework,linq,tsql,C#,Entity Framework,Linq,Tsql,我在尝试执行此行上的“.Where()”时遇到此错误(状态为byte类型): 虽然这样做很好: var user = entities.Users.Where(n => n.UserName == username).FirstOrDefault(); 这是我的用户类: class User { public string UserName { get; set; } public string UserDisplayName { get; set; } publ

我在尝试执行此行上的“.Where()”时遇到此错误(状态为byte类型):

虽然这样做很好:

var user = entities.Users.Where(n => n.UserName == username).FirstOrDefault();
这是我的用户类:

class User
{
    public string UserName { get; set; }
    public string UserDisplayName { get; set; }
    public byte Status { get; set; }
}
和SQL Server中的我的表:

CREATE TABLE [dbo].[Users2](
[UserName] [nvarchar](50) NOT NULL,
[UserDisplayName] [nvarchar](50) NOT NULL,
[Status] [tinyint] NULL)
详细错误消息:

EntityFramework.SqlServer.dll中发生类型为“System.NotSupportedException”的异常,但未在用户代码中处理

其他信息:指定的类型成员“状态”不正确 在LINQ中支持到实体。仅初始值设定项、实体成员和 支持实体导航属性

关于模型创建方法:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    throw new UnintentionalCodeFirstException();
}

有什么想法吗?我可以将entities.Users.ToList()分配给一个变量,并对其执行where操作(有效),但我希望避免将所有数据拉回来。

OnModelCreating函数体让我认为您使用的是基于设计器的方法,即您有一个显示模型的
.edmx
文件,因为该代码是

那么,我想知道实体框架是否知道
User
类的
Status
属性需要映射到
Users2
表的
Status
列。打开
.edmx
并检查
用户
实体应该会告诉您这一点


如果没有,您可以自己添加映射。

函数体上的
OnModelCreating
让我认为您使用了基于设计器的方法,即您有一个
.edmx
文件来显示您的模型,因为该代码是

那么,我想知道实体框架是否知道
User
类的
Status
属性需要映射到
Users2
表的
Status
列。打开
.edmx
并检查
用户
实体应该会告诉您这一点


如果没有,您可以自己添加映射。

您遇到了什么错误?请告诉我们错误的全文。我们无法根据你文章的主题行来判断。你是对的,对此感到抱歉。已更新。您是否在此处向我们展示了完整的实体类,以及完整的属性?在您的上下文中,
OnModelCreating
函数中的任何内容如何?您的数据库是否在状态列中包含任何空值?您得到了什么错误?请告诉我们错误的全文。我们无法根据你文章的主题行来判断。你是对的,对此感到抱歉。已更新。您是否在此处向我们展示了完整的实体类,以及完整的属性?在您的上下文中,
OnModelCreating
函数中的任何内容如何?您的数据库是否在状态列中包含任何空值?谢谢,这很有帮助!我很高兴它做到了。如果您有更多关于如何解决问题的详细信息,您是否可以添加一条评论来帮助可能在这个问题上绊倒的人?谢谢,这很有帮助!我很高兴它做到了。如果您有更多关于如何解决问题的详细信息,您是否可以添加一条评论来帮助可能在这个问题上遇到障碍的人?
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    throw new UnintentionalCodeFirstException();
}