C# 从物化的“System.Double”类型到“System.Int32”类型的指定强制转换无效,但未定义双精度转换
问候,, 我正在做一个我认为非常简单的程序,我创建了一个三列的视图,定义为String、int和DATETIME。下图C# 从物化的“System.Double”类型到“System.Int32”类型的指定强制转换无效,但未定义双精度转换,c#,asp.net-mvc-5,C#,Asp.net Mvc 5,问候,, 我正在做一个我认为非常简单的程序,我创建了一个三列的视图,定义为String、int和DATETIME。下图 Create View [dbo].[vw_findFaulty] AS WITH CTE_getMAXDate AS ( Select DeviceId,MAX(Createtime) as maxLastDate from locationhistory group by DeviceId ) SELECT B.DeviceName,DeviceId
Create View [dbo].[vw_findFaulty]
AS
WITH CTE_getMAXDate AS
(
Select DeviceId,MAX(Createtime) as maxLastDate
from locationhistory
group by DeviceId
)
SELECT B.DeviceName,DeviceId,maxLastDate FROM CTE_getMAXDate A
INNER JOIN dbo.devices B
ON A.DeviceId=B.id
where maxLastDate < dateadd(week,-3,getdate())
我得到的错误是,从具体化的“System.Double”类型到“System.Int32”类型的指定强制转换无效
除此之外,我找不到任何关于双人间的参考资料,我110%确信这以前是有效的。
如果有人能告诉我在哪里可以找到这个错误,我将不胜感激
谢谢假设数据库模型属性如下所示:
public int DeviceId { get; set; }
public string DeviceName { get; set; }
public DateTime maxLastDate { get; set; }
作为一种快速修复方法,有必要使用CAST子句确保视图返回完全相同的数据类型:
创建视图[dbo]。[vw_findFaulty]
像
将CTE_getMAXDate作为
选择DeviceId,MAXCreatetime作为maxLastDate
从位置历史
按设备ID分组
-DeviceId的显式强制转换
-如果DATETIME列也返回类似错误,请使用CASTmaxLastDate作为DATETIME
选择B.DeviceName,CASTDeviceId为INT,maxLastDate从CTE_getMAXDate中作为
将dbo.devices内部连接为B
在A.DeviceId=B.id上
其中maxLastDate我对EntityFramework也有类似的问题。只需从表中选择两列,并创建匿名类型,例如 ctx.mytable.Selectf=>new{f.column1,f.column2} 在测试中工作,而不是在生产中 问题是column2的生产数据库中的数据类型与我的实体模型edmx不同 在测试列2上是一个tinyint,在生产中是一个int。模型是一个tinyint
public int DeviceId { get; set; }
public string DeviceName { get; set; }
public DateTime maxLastDate { get; set; }