我有一个使用传统SQLCommand对象进行查询的Oracle数据库的解决方案。我最近添加了一个项目,其中包含同一数据库的实体框架上下文。
但是,当我将两个连接字符串添加到父项目时,我收到错误Unable to find the requested .Net Framework Data Provider. It may not be installed.
如果删除了任何一个字符串,那么错误就会消失,尽管我已经失去了我想要的功能。这两种数据访问方法都是独立工作的,但似乎并不能协同工作。
以下是连接字符串:
<add name="HRMSAppDb" providerName="Oracle.DataAccess.Client"
connectionString="User Id=UserName;Password=Password;Data Source=server/service;Connection Timeout=30;"/>
<add name="HRMSDB" connectionString="metadata=res://*/HRMSDB.csdl|res://*/HRMSDB.ssdl|res://*/HRMSDB.msl;
provider=Oracle.ManagedDataAccess.Client;
provider connection string="CONNECTION TIMEOUT=30;DATA SOURCE=server/service;PASSWORD=password;USER ID=username""
providerName="System.Data.EntityClient" />
那么,如何在同一个项目中包含和使用EF托管连接和非托管SQLCommand连接提供程序?
答案 0 :(得分:1)
我使用EF和原始sql,其中EF将无法使用此MVVM类型架构高效地完成工作
的摘录 results =
"select o.id,CAST(1 AS NUMBER(1))AS CONTACT_TYPE, O.NAME AS ENG_NAME,CAST(0 AS NUMBER(1)) AS SPECIAL_NEEDS, " +
myModel.StageId + " AS STAGE_ID " +
"from organization o, contact c " +
" where o.id = c.id " +
" and c.disabled = 0 and c.dirty = 0 " +
" AND utl_match.jaro_winkler_similarity (UPPER('" + myModel.EngName + "'), UPPER (o.NAME)) > " +
JaroWinklerDistance +
" ORDER BY utl_match.jaro_winkler_similarity (UPPER('" + myModel.EngName +
"'), UPPER (o.NAME)) DESC";
var data = _context.Database.SqlQuery<CONTACT_DETAILS>(results);
2)我们的连接字符串
<configuration>
<connectionStrings>
<add name="XXXEntities" connectionString="metadata=res://*/DataModel.XXX.XXXModel.csdl|res://*/DataModel.XXX.XXXModel.ssdl|res://*/DataModel.XXX.XXXModel.msl;provider=Oracle.DataAccess.Client;provider connection string="DATA SOURCE=XXX;PASSWORD=XXX;PERSIST SECURITY INFO=True;USER ID=XXXX;" providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>