我是一個擁有不到一年的經驗的新手。可悲的是,我沒有人會問我的公司,所以我花了很多時間來找出問題所在。從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
所以代碼不拋出任何異常? – Fran
也是Oracle的連接字符串將看起來與sql服務器有很大不同。 Oracle使用tnsnames.ora文件將連接映射到特定的oracle服務實例。您發佈的連接字符串是您可以在tnsnames.ora文件中找到的完整條目。將此信息保留在連接字符串中而不是tnsnames文件是我書中的一個優點,因爲它使您不太依賴於Oracle客戶端。 – Fran
沒有先生,它沒有顯示異常之前,它顯示奇怪的數據源=(localdb)\ mssqllocaldb; ~~ 在那一步之後,它拋出異常像Enumerable沒有返回任何東西。我認爲這只是因爲圖片中的連接字符串。不知道xd來自哪裏 –