c# - 'x' 上的 'y' 属性无法设置为 'System.Decimal' 值。您必须将此属性设置为类型为 'System.Boolean' 的非空值

标签 c# mysql entity-framework stored-procedures

我有一个 MySQL 存储过程,它从名为 tuser 的特定表中选择数据。

我正在使用 EntityFramework6,所以我将过程的结果定义为 tuser 的实体。

enter image description here

当我在 C# 代码中使用该过程时,抛出以下异常:

The 'bIsActive' property on 'tuser' could not be set to a 'System.Decimal' value. You must set this property to a non-null value of type 'System.Boolean'.

我无法理解我想执行的操作与抛出的异常之间的联系。

数据库中的表定义:

CREATE TABLE `tuser` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`sUserName` varchar(45) DEFAULT NULL,
`sUserNameMail` varchar(45) DEFAULT NULL,
`sMail` varchar(45) DEFAULT NULL,
`bIsActive` bit(1) DEFAULT b'1')
 ENGINE=InnoDB AUTO_INCREMENT=2225 DEFAULT CHARSET=utf8;

ef 中的 bIsActive 定义:

enter image description here

存储过程定义:

CREATE DEFINER=``@`` PROCEDURE `GetActiveUsers`()
BEGIN
  select u.* from tuser u
  where u.bIsActive=true;
END

执行以下代码行时发生错误:

List<tuser> list = Context.GetActiveUsers().ToList();

内部 GetActiveUsers 代码(自动生成):

public virtual ObjectResult<tuser> GetActiveUsers()
{    
   return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<tuser>("GetActiveUsers");
}

最佳答案

好的,感谢所有回复者。

我仍然不知道问题出在哪里,但是当我从模型中删除 tuser 表并再次添加它时,问题就解决了。

关于c# - 'x' 上的 'y' 属性无法设置为 'System.Decimal' 值。您必须将此属性设置为类型为 'System.Boolean' 的非空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44693058/

相关文章:

c# - 在映射中保留 null - 不要为类型创建默认值

php - 如何查询两个变量以返回一个结果?

c# - 将 DataTable 转换为 List<Entity> (ProjectDracula)

c# - WPF:缩放路径的正确方法?

c# - 如何检索 .NET 运行时生成的所有封闭泛型类型的列表?

C# Flurl - 将 WebRequestHandler 添加到 FlurlClient

entity-framework - Entity Framework 5 不生成 [Key] 属性

mysql - #1054 - 字段列表中的未知列

php - 使用 AngularJS 和 Slim PHP 进行路由

entity-framework - EF 代码优先 - 无法检查模型兼容性,因为数据库不包含模型元数据