Oracle使用实体框架和LDAP的连接字符串
我有一个使用实体框架4.3连接到Oracle数据库的ASP.NET 4.0应用程序。因为我们使用标准方法,因此开发环境中的连接不成问题。连接字符串由Visual Studio生成。Oracle使用实体框架和LDAP的连接字符串
问题是,在生产和验收环境中,我们必须使用LDAP。我已验证连接,并可使用Oracle的SQL Developer中的LDAP进行连接。
我需要web.config中连接字符串的语法帮助。它应该是什么样子?我无法找到任何示例,并且在生产和接受方面我没有Visual Studio来查看它是否可以自动生成。
更新:
我需要语法更改是连接到本地Oracle Express来连接字符串如果你用“/”为用户名,留下密码留空使用LDAP
<connectionStrings>
<add name="VoccDbContext" connectionString="metadata=res://*/Entities.Vocc.VoccModel.csdl|res://*/Entities.Vocc.VoccModel.ssdl|res://*/Entities.Vocc.VoccModel.msl;provider=Oracle.DataAccess.Client;provider connection string="DATA SOURCE=localhost:1521;PASSWORD=somePassKey;PERSIST SECURITY INFO=True;USER ID=someUser"" providerName="System.Data.EntityClient" />
</connectionStrings>
要回答如果有人需要它。解决方法比较简单:
LDAP.ORA文件与正确的LDAP参数
DIRECTORY_SERVERS=(tnsnames.somesite.org:389:636)
DEFAULT_ADMIN_CONTEXT="dc=site,dc=com"
DIRECTORY_SERVER_TYPE=OID
,比连接字符串的情况类似,而不LDAP
<connectionStrings>
<add name="VoccDbContext" connectionString="metadata=res://*/Entities.Vocc.VoccModel.csdl|res://*/Entities.Vocc.VoccModel.ssdl|
 res://*/Entities.Vocc.VoccModel.msl;provider=Oracle.DataAccess.Client;provider connection string="DATA SOURCE=sameDbName;PASSWORD=somePass;USER ID=someUser;"" providerName="System.Data.EntityClient" />
</connectionStrings>
在连接字符串中设置用户名/密码是否会影响LDAP?或者它做LDAP然后否定用户名/密码? – 2012-07-27 12:10:17
因为我连接到多个数据库测试,因此,我为每个数据库使用不同的密码,所以按照我的理解,LDAP只将数据库名称映射到特定的机器/ Oracle实例,因此可以更改Oracle计算机而无需更新客户机连接字符串。 – 2012-07-27 12:50:52
整洁,很高兴知道。 – 2012-07-27 13:30:00
此连接字符串,它将更改为Windows身份验证。
以下是关于Connecting to the Oracle Database Using Windows Authentication和this question的MSDN文章解决了用户无法使用ODP.NET及其修复程序连接到Oracle数据库的问题。
这里就是我的App.Config中的连接字符串的一个看起来像使用Windows身份验证连接:
<connectionStrings>
<add name="EntityFrameworkEntities" connectionString="metadata=res://*/EntityFrameworkModel.csdl|res://*/EntityFrameworkModel.ssdl|res://*/EntityFrameworkModel.msl;provider=Oracle.DataAccess.Client;provider connection string="DATA SOURCE=EntityFrameworkDatabase;PASSWORD=;USER ID=/"" providerName="System.Data.EntityClient"/>
</connectionStrings>
我没有使用Windows身份验证。这是一些Unix或Oracle LDAP,其中有很多Oracle数据库。 – 2012-07-27 09:51:13
ü还可以修改需要在oraclehome文件夹/ network/admin中有一个sqlnet.ora文件,内容如下
# sqlnet.ora Network Configuration File
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (LDAP,TNSNAMES,EZCONNECT)
和LDAP.ora与以下内容
DEFAULT_ADMIN_CONTEXT = "dc=world"
DIRECTORY_SERVERS = (server1.x.com:389:636, server2.x.com:389:636)
DIRECTORY_SERVER_TYPE = OID
你的意思是你正在使用LDAP做Windows身份验证?或者我误解了你的问题。你是否尝试过“user id = /”和“password =”(没有密码,并且用户名为正斜杠) – 2012-07-18 20:44:52
我还没有尝试过任何东西,因为我必须在接受env时进行此操作。已经在使用中(应用程序连接到SQL Server和Oracle以及Oracle的部分应用程序不工作),我的实验时间有限。 – 2012-07-19 08:33:10