2017-02-23 48 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="..." /> 

我知道这可能为时已晚:)

相关问题