我有一个具有可空int属性的类,为了过滤原因,我需要转换为字符串来进行一些比较.我安装了EF 6.1.2,因此使用.ToString()将适用于此.
queryableData = queryableData.Where(a => a.PropName.HasValue && a.PropName.Value.ToString().Contains("8675309"));
在检查正在执行的实际sql时,该数字正在被CAST转换为NCLOB类型,这会导致以下错误:
ORA-00932: inconsistent datatypes: expected NCHAR – got NCLOB
从我读过的内容来看,这是因为实体在这种情况下不知道潜在的最大大小,所以它默认为最大的选项.我知道有一个字符串属性,我可以表示最大大小来帮助.在将属性保持为int以防止NCLOB被使用时,我能做些什么吗?或者在防止此异常时使用它们的方法?
其他一些说明:
>我在Oracle系统上,所以sqlFunctions.StringConvert已经出局了.
>我在Odp.net版本12.x(与this post相关).
> EF是一种模型优先方法.
> .Where()子句被添加到AsQueryable()中,因此我无法在内存中执行任何操作.
解决方法
我在Oracle(Oracle 11.2.02和Oracle.ManagedDataAccess.12.2.1100)和实体框架(EntityFramework.6.1.3)中遇到了同样的问题.
Material.Id.ToString()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。