我搜索了以下链接:
以及有关 Oracle 部署的许多其他帖子。
基本上我有一个 C# 简单的测试应用程序来将一些行插入数据库(这是一个测试应用程序。完整的应用程序使用了很多 EF 的东西):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Diagnostics;
using MzDbLib.DataAccessObject;
using MzDbLib.DatabaseContext;
using MzDbLib.DatabaseModel;
namespace TestDbConnection
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("This program will generate 10 logs into SYSTEMDATALOG table");
///
/// Do a loop of 10 logs generated
///
for (int i = 0; i < 10; i++)
{
string msg = "TEST GENERATED LOG NUMBER " + i.ToString();
Console.Write("Generating log " + i.ToString() + "...");
//
// Connect to database and to the log table
//
Entities dbContext = new Entities();
SYSTEMDATALOG logTable = new SYSTEMDATALOG();
logTable.DATETIME = DateTime.Now;
logTable.TYPE = "INFO";
logTable.SEVERITY = 0;
logTable.SOURCE = "TESTDBCONNECTION";
logTable.USER = "SYSTEM";
logTable.MESSAGE = msg;
dbContext.SYSTEMDATALOG.Add(logTable);
dbContext.SaveChanges();
Console.WriteLine("Done.");
}
Console.WriteLine ("Data generated at the database. Press a key to end test.");
Console.ReadKey();
//
// Application exit
//
Environment.Exit(0);
}
}
}
dbContext 和 SYSTEMDATALOG 类是通过 EF 模型优先从 Oracle 数据库生成的。我正在使用 Visual Studio 2012 和 ODAC 12.1.0.1.0,并在开发机器上安装了 32 位的 Oracle Developer Tools。开发时所有全新安装和工作都很好。
在开发中一切都运行良好,但在生产中却没有。
我在生产中使用 WINDOWS SERVER 2012。我尝试了以下方法:
a) 从 schatch 安装 WS2012 并从 Oracle 站点安装全新的 ODAC 32 位版本 12.1.0.1.0。我确实使用 ODAC 4 版本运行安装。
我得到“提供程序与 Oracle 客户端的版本不兼容”。经过一些尝试和几个小时的损失,采用不同的方法,我决定采用一种新方法 - 不安装 Oracle
b) 我全新安装了 WS2012 并且没有安装 ORacle。复制了上述链接中所述的 DLL,现在我得到“无法找到请求的 .NET 数据提供程序”。我已将所有可用的 Oracle DLL 从 DEV 机器复制到我的应用程序的 WS2012 EXE 目录中,但仍然出现该错误。
我的连接字符串(由 VS2012 自动生成)是:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<connectionStrings>
<add name="Entities" connectionString="metadata=res://*/DatabaseModel.DatabaseModel.csdl|res://*/DatabaseModel.DatabaseModel.ssdl|res://*/DatabaseModel.DatabaseModel.msl;provider=Oracle.DataAccess.Client;provider connection string="data source=//ORACLESERVER1:1521/MEZAMES;password=xxx;persist security info=True;user id=MZMESDB"" providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>
这个字符串被生成到 2 个文件中:TestDbConnection.exe.config
和TestDbConnection.vshost.exe.config
(我正在将 bin/Debug 文件夹复制到服务器)。
因此,我需要帮助将我的应用程序部署到新服务器。一些问题:
a) ODAC 12.1.0.1 的应用程序需要哪个 DLL?这与 ODAC 11 有什么不同吗?
b) 最后一个错误是关于 EF 还是 Oracle ?
c) 为什么 VS 会生成 2 个配置文件?
d) "providerName="System.Data.EntityClient" 是错误的原因吗?如果是,应该一起复制什么 DLL。
e) 是否有任何工具/方法可以知道缺少什么或版本不兼容,避免复制和尝试方法?
f) 配置文件中是否缺少某些内容?
感谢大家的任何帮助。这让我发疯了,因为我从本周开始就一直坚持下去......