Son*_*yet 7 c# asp.net oracle entity-framework connection-string
我需要帮助 !我不确定标题是否重要,所以我会尝试更好地解释.
我在一个使用http请求到ASP.NET web api站点的角度网站上工作.我的数据库是Oracle数据库.我使用Entity Framework(Database First)和一个硬编码连接字符串(在我的web.config中)
Run Code Online (Sandbox Code Playgroud)<add name="UserConnection" connectionString="DATA SOURCE=ip:port/name;PASSWORD=pwd;PERSIST SECURITY INFO=True;USER ID=usr" providerName="Oracle.ManagedDataAccess.Client" />(我用ip替换了真正的信息;端口;名称; pwd; usr,因为我无法显示它们)
所有这些都有效,但现在我的团队希望能够将此Oracle连接字符串与动态USER ID和PASSWORD结合使用
目标是使用一个用户的凭据登录我的角度应用程序,并使用相同的凭据连接到Oracle DB.因此我不能再使用这个硬编码连接字符串了.(创建时,用户都在db users表和oracle users表中)
我试图为我的db:Dbcontext类创建另一个构造函数,给出一个连接字符串:base()第一个参数:
public partial class db:DbContext {
public db(string connectionString):base(connectionString){}
...}
其中connectionString是我web.config中的同一块:"DATA SOURCE = ip:port/name; PASSWORD = pwd; PERSIST SECURITY INFO = True; USER ID = usr"
测试它给了我这个错误:
"提供的sqlconnection未指定初始目录或attachdbfilename oracle"
我认为这不起作用,因为我没有在base first param中提供我的providerName("Oracle.ManagedDataAccess.Client"),但我没有找到接受providerName的第二个参数的构造函数.
我也试过这个:
public db(string connectionString):base(new OracleConnection(connectionString)){}
但是Visual Studio给了我这个错误:
"Erreur CS1503 Argument 1:转换不可能de'Oracle.ManagedDataAccess.Client.OracleConnection'en'System.Data.Entity.Infrastructure.DbCompiledModel'"
我不知道DbCompiledModel是什么,也许这是关键,或者说我做错了.
我还尝试编辑web.config连接字符串,更改用户和密码并使用使用此连接字符串的默认db构造函数,但编辑此文件不能执行我想要的操作:只有在db请求之后才会编辑连接字符串完了,它重新加载了应用程序.
我知道它会超级,我有点迷失在那里,我刚开始做一些BackEnd应用程序(我正在实习)我之前只做FrontEnd.
感谢阅读,这有点长.我没有在论坛中找到我想要的成功结果,所以我尝试自己询问
桑尼
You can set dynamically new OracleConnection, but you need also set contextOwnsConnection to true. This resolve your error :
" Erreur CS1503 Argument 1 : conversion impossible de 'Oracle.ManagedDataAccess.Client.OracleConnection' en 'System.Data.Entity.Infrastructure.DbCompiledModel' "
public partial class Entities : DbContext
{
public Entities()
: base(new OracleConnection("DATA SOURCE=Server; PASSWORD=123;USER ID=SYSTEM"), true)
{
}
}
Run Code Online (Sandbox Code Playgroud)