正如标题所暗示的,当通过实体框架通过linq传递字符串值时,我得到了"ORA-00932: inconsistent datatypes: expected - got NCLOB"
。
我正在使用VS 2010,ODAC 2011和EF支持。
我尝试传递值本身(没有变量,但直接使用“”),它只是工作正常,我已经测试了我的变量,是的,它很好,它提供了正确的价值。我想这是一个错误,字符串值错误地到达Oracle,任何人都面临这个?有什么工作吗?
提前致谢
public ObservableCollection<String> getCarModels(string carName)
{
carContext = new Entities();
carModelNamesList = new ObservableCollection<string>();
var result = from d in carContext.CARs
where d.NAME == carName
select d;
foreach (CAR d in result)
{
string f = d.MODEL;
carModelNamesList.Add(f);
}
return carModelNamesList;
}
答案 0 :(得分:2)
伙计们,对不起,这是我的不好,当事件发生时,变量为null,我的测试方式是使用另一个事件,因此当我的测试事件发生时变量具有正确的值,并且当实际发生时变量为null事件发生了,我希望这可以帮助别人。
答案 1 :(得分:2)
当我尝试根据Where子句中的String.Empty值检查varchar2时,出现了同样的错误。这让我花了很多时间试图弄清楚发生了什么。我想你必须小心你的条件,因为甲骨文可能非常挑剔!
答案 2 :(得分:0)
我还想补充一点,我们的团队得到了同样的错误,并通过从数据库刷新实体模型来解决。我修改了设计器以使列可以为空,但我想这并不是最干净的方法,因为它“混淆”了EF引擎。在从数据库中刷新之后,它编码了它想要在设计器代码中看到可为空的列的方式,之后我们很好。
当然,我们不知道EF幕后背后的真实情况以及为什么会绊倒它。好像是一个bug。为什么我们不能直接在设计器中调整列的属性?