【发布时间】:2018-02-04 23:24:39
【问题描述】:
型号:
//Auto generated by MVC Model
public partial class user
{
public int Ref { get; set; }
public string First_Name { get; set; }
public bool isAdmin { get; set; } //the problem
}
数据库:
Ref | First_Name | isAdmin
1 | Admin | 1
2 | Bob | 0
C#:
var u1= db.users.Find(1); //get Admin
var ia1= u1.isAdmin; //return false (0)
var adminList = db.users.Where(i => i.isAdmin == true).ToList(); //return error
错误:
System.NotSupportedException: '指定类型成员'isAdmin' 是 在 LINQ to Entities 中不受支持。只有初始化器,实体成员, 并支持实体导航属性。'
======
我确实尝试删除 ADO.NET 模型并重新添加它,重新启动我的机器但没有运气 MVC 模型仍然没有从数据库中获取正确的值。 (尽管它选择了新列)。
我确实多次更改了我的数据库结构,这很好,与当时不同的是我将 .NET 框架目标从 4.6 更改为 4.5.2,这会是导致此问题的原因吗?
回到主要问题是为什么模型没有返回正确的值,以及为什么当我通过 (isAdmin == true) 查询时它得到不支持的异常 - 这应该是主要问题,但我对正在发生的事情一无所知.
【问题讨论】:
-
我很好奇 - 数据库中的
isAdmin是什么数据类型? -
@Nick.McDermaid 我使用 MS SQL Server,它在数据库中位并在模型中映射为 bool |对于我在几个项目中一直坚持使用这种数据类型的记录,我认为这不应该是问题。
-
Visual Studio 错误列表窗口中是否有关于模型的错误或警告?
-
那么,如果将 .NET Framework 目标改回 4.6,问题会消失吗?
-
查看我的代码,我有一个 bool 类型的模型属性,它基于位类型的数据库字段。在我的 lambda 函数中,我没有
== true部分。例如我有.Where(x => x.IsLeave)。我不认为这应该有所作为。事实上,无论我是否将== true放在那里,它都会建立
标签: c# .net asp.net-mvc entity-framework linq