繁体   English   中英

使用Entity Framework作为对象读取的sql_variant无法转换为其实际类型

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM