C# 无法确定类型为';的连接的提供程序名称;Oracle.DataAccess.Client.OracleConnection';
我试图将现有连接传递到DbContext,但出现以下错误: 无法确定类型为的连接的提供程序名称 Oracle.DataAccess.Client.OracleConnection 我做错了什么C# 无法确定类型为';的连接的提供程序名称;Oracle.DataAccess.Client.OracleConnection';,c#,.net,oracle,entity-framework,C#,.net,Oracle,Entity Framework,我试图将现有连接传递到DbContext,但出现以下错误: 无法确定类型为的连接的提供程序名称 Oracle.DataAccess.Client.OracleConnection 我做错了什么 var oracleConnectionString = ConfigurationManager.ConnectionStrings["OracleConnectionString"].ConnectionString; var transactionOptions = new Tra
var oracleConnectionString = ConfigurationManager.ConnectionStrings["OracleConnectionString"].ConnectionString;
var transactionOptions = new TransactionOptions();
transactionOptions.IsolationLevel = IsolationLevel.ReadCommitted;
using (var scope = new TransactionScope(TransactionScopeOption.Required, transactionOptions))
{
using (var conn = new OracleConnection(oracleConnectionString))
{
conn.Open();
using (var context = new MainDbContext(conn, false))
{
var cmd = @" some sql commandd here ...";
context.Database.ExecuteSqlCommand(cmd);
context.SaveChanges();
}
}
scope.Complete();
}
连接字符串:
<add name="OracleConnectionString" connectionString="Data Source=SERVER;Persist Security Info=True;User ID=USER;Password=PASS" />
当您的
edmx
文件位于不同的类项目中时,也就是说您的web项目,您还需要在web项目中具有相同的连接字符串
所以
班级项目:
- edmx文件
- App.Config(edmx文件的连接字符串)
- Config(与上面的连接字符串相同。)
程序集。如果先使用数据库,看起来无法从Oracle连接字符串创建新的DbContext,因为EF不知道在哪里查找元数据。您需要使用EF连接,而不是Oracle连接。这就是我解决问题的原因:
var efConnectionString = ConfigurationManager.ConnectionStrings["MainDbContext"].ConnectionString;
using (var conn = new EntityConnection(efConnectionString))
{
conn.Open();
using (var context = new MainDbContext(conn, false))
{
}
}
你确定你的
oracleConnectionString
正确吗?显示你的连接字符串。我在问题中添加了连接字符串。你的实体框架edmx在调用项目的不同项目中吗?还是都是一个项目?@Patrickhoffman:连接字符串的语法正确。我试着这么做,但不幸的是,这没有帮助。另外,我需要使用OracleConnection,所以我想我需要的是Oracle连接字符串,而不是.edmx文件连接字符串(带有“metadata=res://…”的字符串),也需要添加Oracle连接。我也这样做了。现在我在App/Web.config中有两个连接字符串