次のリンクを検索しました。
そして、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 クラスは、Oracle データベースから EF モデル ファーストで生成されました。私は Visual Studio 2012 と ODAC 12.1.0.1.0 を使用しており、開発マシンに Oracle Developer Tools 32 ビットがインストールされています。開発時にすべての新規インストールとかなり正常に動作します。
DEVELOPMENT ではすべて問題なく動作しますが、本番環境では問題ありません。
私は本番環境の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) 構成ファイルに何か欠けているものはありますか?
あらゆる種類の助けをありがとう。週の初めからそれに固執しているので、これは私を夢中にさせています...