我已经在web上搜索过,并在Stack Overflow上查看过类似的问题,但我不知道如何通过C# .Net 4.6控制台应用程序的DbContext使用Oracle托管数据提供程序。
这适用于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 Studio2017连接到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上找到的例子都不起作用,其中'Type Initializor抛出异常‘是最常见的错误。
发布于 2019-03-01 06:51:06
不知道我做了什么不同,但现在它工作了,为子孙后代。
在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;
}
}
这以前是失败的,但现在可以工作了。
https://stackoverflow.com/questions/54934501
复制相似问题