2016-07-15 33 views
0

我有一個Oracle數據庫設置,數據庫有一堆視圖。 視圖GFL_BUYERS_ID_V有2列EMPLOYEE_IDFULL_NAME。在創建mvc項目之前,數據庫已經被填充了。asp net mvc oracle數據庫無法檢索數據

我順利地加入了數據庫,並增加了一個模式modelBuilder.HasDefaultSchema("examplename.");我的情況下,因爲當我使用SQL檢索數據,我需要做的:

SELECT * FROM "examplename".GFL_BUYERS_ID_V

爲它工作,我認爲是它是爲了什麼。提前道歉我是.net,mvc和連接數據庫的新手。

以下崩潰在.Select並告訴我,值不能爲空(我不知道什麼是返回一個空值,如果我檢查上下文中的值 - >GFL_BUYERS_ID_V中斷時,在本地有0個值,在結果視圖它包含了所有合適的人的,我認爲這是相關的信息,但我不知道如何使用它):

 var model = new EmployeeModel(); 

     using (var context = new OracleContext()) 
     { 
      model.Buyers = context.GFL_BUYERS_ID_V.Select(s => new EmployeeModel.Buyer 
      { 
       BuyerId = s.EMPLOYEE_ID, 
       FullName = s.FULL_NAME 
      }).ToList(); 

     } 
     return View(model); 

這是我的目標:

public class EmployeeModel 
{ 

    public int EmployeeModelId { get; set; } 
    public List<Buyer> Buyers { get; set; } 


    public class Buyer 
    { 

     public int BuyerId { get; set; } 
     public string FullName { get; set; } 
    } 
} 

我知道有一個連接到數據庫和我可以通過VB查詢它。我已經用連接字符串弄清楚了,它是正確的。

編輯:劃痕,我不知道如果我的程序能夠連接到數據庫或不。

Screen shot of the error

如果你想我提供更多的信息,我會很樂意,真想讓這一個工作。

編輯2:這似乎是一些生病的玩笑顯然它顯示了一個數:how

回答

0

所以問題出在數據庫服務器而不是代碼。出於某種原因,它使用了一個很久沒有使用的舊的默認模式變量。

0

是否有這是造成ArgumentNullException內部異常?

你肯定沿着正確的路徑思考,所以我將它分解爲易於管理的部分:

1)確認DB連接

2)確認方面是有效的,這將很可能只無效如果沒有連接DB

3)確認GFL_BUYERS_ID_V是顯示數據

4)然後執行投影到不同的模型

+0

如果我去服務器資源管理器,我可以看到它已連接到數據庫,並且我可以使用VB中的查詢從視圖中提取數據。但即使我嘗試獲取context.GFL_BUYERS_ID_V.Count()。它仍然是空的,所以我認爲模式不是我認爲的那樣,所以我評論了它。如果我沒有模式運行它,我得到外部組件拋出異常。兩者都屬於Oracle.ManagedDataAccess.Client。OracleException 否則我不知道如何測試它自己連接的程序,或者如何獲取View以通過程序顯示數據。 –

+0

你可以回拉數據或獲得相同模式中其他表或視圖的記錄數? –

+0

我不能,當我得到一個空值或外部組件拋出異常。我不是100%他們的意思,但因爲我基於添加或刪除架構得到他們兩個(我不知道它是什麼)。我假設null值是因爲它無法確定正確的對象,因爲我可以使用SQL從視圖中提取值。因此,解決外部組件錯誤似乎是前進的方向,因爲我可能只是搞亂提取信息的命令。 –