我正在尝试学习并弄清楚是否可以将MVC,EF,ODAC 11.2.0.3应用程序部署到安装了先前版本的ODP.NET的服务器上.我想我可以使用Oracle Instant Client,而不是更新服务器ODP.NET(我不能).
这可行吗?
1)我将这些dll添加到我的项目中以支持Instant Client
-Oracle.DataAccess.dll
-oci.dll
-ociw32.dll
-orannzsbb11.dll
-oraociei11.dll
-OraOps11w.dll
2)接下来,我更新了dbProviderFactories的web.config
<system.data>
<DbProviderFactories>
<add name="Oracle Data Provider for .NET"
invariant="Oracle.DataAccess.Client"
description="Oracle Data Provider for .NET"
type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</DbProviderFactories>
</system.data>
Run Code Online (Sandbox Code Playgroud)
3)这个(afaik)是如何在bin rathre中使用Oracle dll而不是GAC
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89b483f429c47342" />
<publisherPolicy apply="no" />
</dependentAssembly>
</assemblyBinding>
</runtime>
Run Code Online (Sandbox Code Playgroud)
4)最后我的connectionString
<connectionStrings>
<add name="Entities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=Oracle.DataAccess.Client;
provider connection string="DATA SOURCE=XXX;PASSWORD=XXX;PERSIST SECURITY INFO=True;USER ID=XXX"" providerName="System.Data.EntityClient" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
这是我收到的错误无法找到请求的.Net Framework数据提供程序.它可能没有安装.
我非常感谢这里的任何帮助.我很新,有很多东西需要学习.提前致谢.干杯
此部分只是从Excel电子表格中读取.这部分工作正常,没有性能问题.
IEnumerable<ImportViewModel> so=data.Select(row=>new ImportViewModel{
PersonId=(row.Field<string>("person_id")),
ValidationResult = ""
}).ToList();
Run Code Online (Sandbox Code Playgroud)
在我传递给View之前,我想设置ValidationResult,所以我有这段代码.如果我对此进行评论,则模型会快速传递给视图.当我使用foreach时,它将花费一分钟.如果我对item.PersonId的值进行硬编码,那么它会快速运行.我知道我做错了什么,只是不知道从哪里开始以及我应该遵循的最佳做法是什么.
foreach (var item in so)
{
if (db.Entity.Any(w => w.ID == item.PersonId))
{
item.ValidationResult = "Successful";
}
else
{
item.ValidationResult = "Error: ";
}
}
return View(so.ToList());
Run Code Online (Sandbox Code Playgroud)