2017-02-23 67 views
0

我是一個擁有不到一年的經驗的新手。可悲的是,我沒有人會問我的公司,所以我花了很多時間來找出問題所在。從asp.net mvc中使用linq檢索Oracle數據庫

我剛剛完成asp.net mvc的項目,並試圖改變只DB
來源:SQL服務器
要:甲骨文

我在原來的項目,我從SQL Server中檢索這樣的數據。效果很好。

using (var haksaContext = new HaksaContext()) 
{ 
    try{ 
     var haksa = haksaContext.HaksaMembers.Where(m => m.stnt_numb == model.Stnt_Numb).ToList(); 
     if (haksa.Count == 1){ 

我的代碼在SQL Server於是我去搜索並安裝NuGet包甲骨文沒有問題,Oracle開發工具VS 2015年我成功添加Oracle數據庫到我的服務器資源管理器。而在OracleDB的目標表具有相同的列名,結構(實際上也有像在數據類型有些不同INT < - >號)。

If I query using Query Window, I can select from target table. Seems no problem here..

我複製原來的DbContext(HaksaContext),使OracleContext和修改它像一張照片

public class HaksaContext : DbContext //-> OracleContext 
    { 
     public HaksaContext() : base("HaksaContext") { } //-> OracleContext 
     public DbSet<UniversityMember> HaksaMembers{get; set;} //Didn't fix here bcuz table structure is the same 
     protected override void OnModelCreating(DbModelBuilder modelBuilder) 
     { 
     } 

然後我體改LINQ的一部分。這

using (var haksaContext = new OracleContext()) 
{ 
    try{ 
     var haksa = haksaContext.HaksaMembers.Where(m => m.stnt_numb == model.Stnt_Numb).ToList(); 
     if (haksa.Count == 1){ 

但不檢索數據和haksa。計數是0

我試過調試,發現連接字符串很奇怪。在我的web.config我用這個

<add name="OracleContext" providerName="Oracle.ManagedDataAccess.Client" connectionString="User Id=myid;Password=mypw;(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=targetdbIP)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=haksadb)))" /> 

connectionString, DataSource
這是遠從我在web.config中的connectionString ..這是哪裏的connectionString從何而來..

Data Source=(localdb)\mssqllocaldb;AttachDbFilename=|DataDirectory|OraleContext.mdf;Initial Catalog=OraleContext;Integrated Security=True;MultipleActiveResultSets=True 

如果我從原來的項目調試該部分顯示與我在web.config中輸入的完全相同的connectionString

+0

所以代碼不拋出任何異常? – Fran

+0

也是Oracle的連接字符串將看起來與sql服務器有很大不同。 Oracle使用tnsnames.ora文件將連接映射到特定的oracle服務實例。您發佈的連接字符串是您可以在tnsnames.ora文件中找到的完整條目。將此信息保留在連接字符串中而不是tnsnames文件是我書中的一個優點,因爲它使您不太依賴於Oracle客戶端。 – Fran

+0

沒有先生,它沒有顯示異常之前,它顯示奇怪的數據源=(localdb)\ mssqllocaldb; ~~ 在那一步之後,它拋出異常像Enumerable沒有返回任何東西。我認爲這只是因爲圖片中的連接字符串。不知道xd來自哪裏 –

回答

0

默認情況下,實體框架使用與您的DbContext具有相同名稱的連接字符串。

在你的情況,更改連接字符串

<add name="HaksaContext" providerName="Oracle.ManagedDataAccess.Client" connectionString="..." /> 

我知道這可能爲時已晚:)

相關問題