c# - 将 DBContext 与 Oracle 一起使用
问题描述
我在网上搜索并查看了有关 Stack Overflow 的类似问题,但我不知道如何将 Oracle Managed Data Provider 与来自 C# .Net 4.6 控制台应用程序的 DbContext 一起使用。
这适用于 Sql Express
class SqlDBContext1 : DbContext
{
public SqlDBContext1() : base("SqlExpressDB")
{
using (var ctx = this)
{ var query = from c_codes in ctx.CountryCodes select c_codes; }
}
public DbSet<CountryCode> CountryCodes { get; set; }
}
这可以使用连接字符串连接到远程 Sql Server
class SqlDBContext2 : DbContext
{
public SqlDBContext2() : base(SqlServerString())
{
using (var ctx = this)
{ var query = from c_codes in ctx.CountryCodes select c_codes; }
}
public DbSet<CountryCode> CountryCodes { get; set; }
private static string SqlServerString()
{
return @"Data Source=192.168.0.1;" +
"Initial Catalog=SqlDB1; " +
"Persist Security Info=True; " +
"User ID=USER1; " +
"Password=PASS1";
}
}
我可以从 Visual Studio 2017 连接到 Oracle,并且我已经使用标准 OracleConnection 验证了连接字符串,它打开和关闭,没问题。
有了这个在 APP.CONFIG
<oracle.manageddataaccess.client>
<version number="*">
<dataSources>
<dataSource alias="ORCL1" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.1)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL1))) "/>
</dataSources>
</version>
</oracle.manageddataaccess.client>
<connectionStrings>
<add name="ORCL1DB" providerName="Oracle.ManagedDataAccess.Client" connectionString="User Id=USER1;Password=PASS1;Data Source=ORCL1"/>
</connectionStrings>
我可以使用这样的东西吗?如果是这样,DbContext 的基本构造函数中包含什么?
class OraDBContext : DbContext
{
public OraDBContext() : base("What goes here")
{
using (var ctx = this)
{ var query = from c_codes in ctx.CountryCodes select c_codes; }
}
public DbSet<CountryCode> CountryCodes { get; set; }
}
我在 Stack Overflow 上找到的所有示例都不起作用,其中“类型初始化器引发异常”的各种错误是最受欢迎的。
解决方案
不知道我做了什么不同,但现在它对后代有效。
在 APP.CONFIG 我有这个
<oracle.manageddataaccess.client>
<version number="*">
<dataSources>
<dataSource alias="ORCL1" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.1)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL1))) "/>
</dataSources>
</version>
</oracle.manageddataaccess.client>
<connectionStrings>
<add name="ORCL1DB" providerName="Oracle.ManagedDataAccess.Client" connectionString="User Id=USER1;Password=PASS1;Data Source=ORCL1"/>
</connectionStrings>
我的课看起来像这样
class OraDBContext : DbContext
{
public OraDBContext() : base(ORCL1COnnection(), true)
{
using (var ctx = this)
{
var query = from c_codes in ctx.CountryCodes select c_codes;
}
}
public DbSet<CountryCode> CountryCodes { get; set; }
public static OracleConnection ORCL1COnnection()
{
var c1 = ConfigurationManager.ConnectionStrings["ORCL1DB"];
OracleConnection ora_con = new OracleConnection(c1.ConnectionString);
return ora_con;
}
}
这之前失败了,但现在正在工作。
推荐阅读
- python - Python:将值分配给元素被设置的二维列表数组
- opencv - OpenCV Gstreamer 后端不适用于 h265 编码视频
- python - 循环 CSV 文件中的所有行后返回一些东西
- javascript - Heroku 推送失败并出现构建错误
- sql - 无法在连接条件中应用 case 语句
- python - 使用 Pandas Python 格式化具有给定限制的数据表
- github - GitHub - 工作:什么是:使用操作/结帐
- linux - NPM 不会自动为我设置 cmdlet?
- flutter - 单击时如何更改按钮的图标?
- spring - NestJS 提供者是否需要是无状态的?