[英]sql_variant read using Entity Framework as an object cannot be cast to its actual type
我有一个使用实体框架连接的大型数据库。 这些表之一具有sql_variant
类型的列,Entities不支持该列,因此我使用一些原始SQL进行了读取。
string MinWeight = CEntity.Database.SqlQuery<string>(MinQuery).FirstOrDefault();
效果很好..直到出现数据问题意味着我们关心的记录中有1%在该sql_variant中存储了一个数字,以上内容给了我一个强制转换异常。 我测试了一下,它很好地读取了值
double MinWeightdouble = CEntity.Database.SqlQuery<double>(MinQuery).FirstOrDefault();
但是由于我需要同时处理双精度(SQL数字)和字符串,因此我尝试了
object MinWeightVariant = CEntity.Database.SqlQuery<object>(MinQuery).FirstOrDefault();
我以为我可以轻松地将其转换为字符串或双精度字,但是事实并非如此。 MinWeightVariant.GetType()
仅仅给了我System.Object。 看起来,尽管它在sql读取中深处知道它是数字,但将其分配给对象时该数据会丢失。 任何想法如何以明智的方式解决此问题?
我不确定这是否对您有帮助,但是在T-SQL世界中,您始终可以“查询” sql_variant值以通过SQL_VARIANT_PROPERTY http://msdn.microsoft.com/zh-cn/library/ms178550查找有关底层数据类型的信息 。 aspx 。 您是否想通过将值以及基本类型传递给EF来尝试这种方法?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.