2011-05-01 83 views
0

,因爲標題暗示,當通過實體框架將linq值傳遞給字符串值時,我得到了一個"ORA-00932: inconsistent datatypes: expected - got NCLOB"不能通過EF傳遞參數到Oracle數據庫

我使用VS 2010,ODAC 2011與EF支持。

我試着傳遞值本身(沒有變量,但直接使用「」),它只是工作正常,我測試了我的變量,是的,它很好,它提供了正確的價值。我想這是一個錯誤的地方,字符串值錯誤地達到甲骨文,任何人都面臨這個?任何工作?

在此先感謝

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;   
} 
+1

如果它適用於文字而不是變量,也許你有某種編碼問題?你的Oracle表的定義是什麼? – 2011-05-01 16:33:56

+0

是的,它是varchar2,阿拉伯數值存儲在那裏?這會成爲一個問題嗎? – Musaab 2011-05-01 17:03:59

回答

2

傢伙,對不起是我不好,變量爲空當事件發生時,在我的測試方式是使用另一個事件,所以該變量具有正確的價值時當事件發生時,我的測試事件發生並且爲空,我希望這可以幫助某人。

2

當我試圖在我的Where子句中檢查一個String.Empty值的varchar2時,我得到了同樣的錯誤。這讓我花了很多時間試圖弄清楚發生了什麼。我猜你必須小心你的情況,因爲Oracle可能非常挑剔!

+0

花了幾個小時試圖弄清楚這個問題,而'WHERE子句'中的'String.Empty'是問題所在。謝謝。 – Kurubaran 2016-03-22 14:40:22

0

我也想補充一點,我們的團隊剛剛得到了同樣的錯誤,並且通過從數據庫中刷新實體模型來解決問題。我修改了設計器,使列可以爲空,但我想這並不是最簡單的方法,因爲它「困惑」了EF引擎。在從數據庫刷新後,它編碼的方式是希望在設計器代碼中看到一個空列,我們之後很好。

當然,我們不知道EF幕幕背後究竟發生了什麼,爲什麼會發生這種情況。看起來像一個錯誤。爲什麼我們不能直接在設計器中調整列的屬性?