无法通过EF将参数传递给Oracle数据库

时间:2011-05-01 16:18:26

标签: .net oracle entity-framework

正如标题所暗示的,当通过实体框架通过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;           
}

3 个答案:

答案 0 :(得分:2)

伙计们,对不起,这是我的不好,当事件发生时,变量为null,我的测试方式是使用另一个事件,因此当我的测试事件发生时变量具有正确的值,并且当实际发生时变量为null事件发生了,我希望这可以帮助别人。

答案 1 :(得分:2)

当我尝试根据Where子句中的String.Empty值检查varchar2时,出现了同样的错误。这让我花了很多时间试图弄清楚发生了什么。我想你必须小心你的条件,因为甲骨文可能非常挑剔!

答案 2 :(得分:0)

我还想补充一点,我们的团队得到了同样的错误,并通过从数据库刷新实体模型来解决。我修改了设计器以使列可以为空,但我想这并不是最干净的方法,因为它“混淆”了EF引擎。在从数据库中刷新之后,它编码了它想要在设计器代码中看到可为空的列的方式,之后我们很好。

当然,我们不知道EF幕后背后的真实情况以及为什么会绊倒它。好像是一个bug。为什么我们不能直接在设计器中调整列的属性?