Console App更新数据库但查询时不会连接到数据源
Console App updates database but will not connect to data source when querying
我创建了一个控制台应用程序来连接到 Oracle ADW 数据库。当我进行初始迁移时,它完全按照我的预期创建了 tables。现在,当我尝试在该数据库上查询 table 时,出现错误:“ORA-12154:TNS:could 未解析指定的连接标识符”
我知道它可以连接,因为更新数据库成功了。这是我的上下文:
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WCONSftpFileUploadChecks.Models;
namespace WCONSftpFileUploadChecks.Data
{
public class OracleDBContext : DbContext
{
public OracleDBContext() : base()
{
}
public virtual DbSet<FileDet> FileDetails { get; set; }
public virtual DbSet<RemotePath> RemotePaths { get; set; }
public virtual DbSet<Peter> Peters { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseOracle(@"User Id=<USER>;Password=<PASSWORD>;Data Source=<SOURCENAME>");
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<FileDet>()
.Property(p => p.value)
.HasColumnType("decimal(18,4)");
}
}
}
项目结构如下:
下面是我尝试检索数据的方式:
using WCONSftpFileUploadChecks.Code;
using WCONSftpFileUploadChecks.Data;
using WCONSftpFileUploadChecks.Models;
namespace WCONSftpFileUploadChecks
{
public class Program
{
public static void Main(string[] args)
{
using(var ctx = new OracleDBContext())
{
foreach (RemotePath p in ctx.RemotePaths)
{
Console.WriteLine(p.remote_path);
}
}
Console.ReadLine();
return;
}
}
}
这是它抛出错误的地方:
我故意没有包含模型,因为我认为它不相关。我只是看不出有什么问题。
答案很简单,只在我的上下文文件中的 OnModelCreating 方法中添加了两行:
OracleConfiguration.TnsAdmin = @"C:\path\to\wallet\file";
OracleConfiguration.WalletLocation= @"C:\path\to\wallet\file";
我创建了一个控制台应用程序来连接到 Oracle ADW 数据库。当我进行初始迁移时,它完全按照我的预期创建了 tables。现在,当我尝试在该数据库上查询 table 时,出现错误:“ORA-12154:TNS:could 未解析指定的连接标识符”
我知道它可以连接,因为更新数据库成功了。这是我的上下文:
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WCONSftpFileUploadChecks.Models;
namespace WCONSftpFileUploadChecks.Data
{
public class OracleDBContext : DbContext
{
public OracleDBContext() : base()
{
}
public virtual DbSet<FileDet> FileDetails { get; set; }
public virtual DbSet<RemotePath> RemotePaths { get; set; }
public virtual DbSet<Peter> Peters { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseOracle(@"User Id=<USER>;Password=<PASSWORD>;Data Source=<SOURCENAME>");
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<FileDet>()
.Property(p => p.value)
.HasColumnType("decimal(18,4)");
}
}
}
项目结构如下:
下面是我尝试检索数据的方式:
using WCONSftpFileUploadChecks.Code;
using WCONSftpFileUploadChecks.Data;
using WCONSftpFileUploadChecks.Models;
namespace WCONSftpFileUploadChecks
{
public class Program
{
public static void Main(string[] args)
{
using(var ctx = new OracleDBContext())
{
foreach (RemotePath p in ctx.RemotePaths)
{
Console.WriteLine(p.remote_path);
}
}
Console.ReadLine();
return;
}
}
}
这是它抛出错误的地方:
我故意没有包含模型,因为我认为它不相关。我只是看不出有什么问题。
答案很简单,只在我的上下文文件中的 OnModelCreating 方法中添加了两行:
OracleConfiguration.TnsAdmin = @"C:\path\to\wallet\file";
OracleConfiguration.WalletLocation= @"C:\path\to\wallet\file";