[英]The 'x' property on 'y' could not be set to a 'System.Decimal' value. You must set this property to a non-null value of type 'System.Boolean'
[英]could not be set to a 'System.Decimal' value. You must set this property to a non-null value of type 'System.Double'
您好我正在使用mvc示例从数据库中获取数据。 我在这里得到了一个错误
异常详细信息:System.InvalidOperationException:'Employee'上的'number'属性无法设置为'System.Decimal'值。 您必须将此属性设置为类型为“System.Double”的非null值。
描述:执行当前Web请求期间发生未处理的异常。 请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
请在这里查看我的代码,我收到了上述错误。
public ActionResult Details(int id)
{
EmployeeContext empcon = new EmployeeContext();
Employee employ = empcon.employees.Single(emp => emp.empid == id);
return View(employ);
}
Routiconfig
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
RouteTable.Routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "emp", action = "Details",
id = UrlParameter.Optional }
);
}
我认为这可能是因为null值转换尝试存储在double中。
将你的double
改为
double?
有关说明,请参阅以下链接: http : //msdn.microsoft.com/en-us/library/2cf62fcy.aspx
谢谢!
这可能是DB的问题,从我的经验来看,我得到了这个例外,因为我使用了store-procedure中的数据(使用实体框架生成对象类)
在我的SP中的一个数字字段我提供这样的数据合同
CAST(NULL AS DECIMAL) AS UnitAmount
所以在我的代码中(在实体框架生成类之后)我得到了包含的类
Decimal UnitAmount{get;set;}
但是当我运行我的代码时,会发生此错误
...无法设置为'System.Int32'值。 您必须将此属性设置为类型为“System.Decimal”的非null值。
这是因为在我的SP中有一个案例条件,我返回我的结果,所以数据类型返回不匹配。
-- if no data
Select ... ,
0 as UnitAmount,
....
如果你没有转换/转换结果0 - >它将被视为Int32(0.00->被视为十进制,)
在我的情况下,问题是错误的DB列类型 - 这是数字和属性很长 。 所以我只需要将列重新创建为bigint 。
在我的情况下,它是视图的问题,当存在空值时返回值。
有“ISNULL(dbo.STOCK_ITEMS.STDCOST,0)AS STDCOST”之类的东西
然后没有工作。
尝试“ISNULL(dbo.STOCK_ITEMS.STDCOST,0.0)AS STDCOST”
没有工作,但以下工作......
ISNULL(dbo.STOCK_ITEMS.STDCOST, 0.00) AS STDCOST
现在都在工作......
我遇到了类似的问题,说“无法设置为'Decimal'值。您必须将此属性设置为'Int32'类型的非null值。” 一列。 我搜索了解决方案,发现我在解决方案中将此列设置为Int。 但在数据库中,它被设置为钱,而不是int。 所以我在数据库级别更改了它。 它的工作原理。
我遇到的情况是我无法更改表中列的类型(大项目,许多依赖项)。
我有一个View将数据输入到Class定义中,类似于:
SELECT Name,Phone,ID FROM People
这里,我的ID是int类型,但是被用作类型字符串。 为了解决这个问题,我改为构建了我的View:
SELECT Name, Phone, CONVERT(NVARCHAR(2), ID) AS ContactMethodTypeId FROM People
只是将CONVERT放在有问题的类型周围,它将返回指定的类型。 就我而言,NVARCHAR。
SQL中的小数与.Net中的小数不同。 如果查看SqlDbType枚举表,您会发现SQL十进制等效于double类型。
来自C#参考文献
浮子>双。 浮点数在-1.79E +308到1.79E +308范围内。
public double? number { get; set; }
在我的情况下改变浮动代码? 加倍? & 有用。
public double? number { get; set; }
我的数据库表列类型是float。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.