C# 仅初始值设定项、实体成员(…)。无法对特定列执行Where()操作
我在尝试执行此行上的“.Where()”时遇到此错误(状态为byte类型): 虽然这样做很好: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
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();
}