1

次のリンクを検索しました。

EF を使用して Oracle をデプロイする方法

EF を使用して Oracle をデプロイする際の問題

そして、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=&quot;data source=//ORACLESERVER1:1521/MEZAMES;password=xxx;persist security info=True;user id=MZMESDB&quot;" 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) 構成ファイルに何か欠けているものはありますか?

あらゆる種類の助けをありがとう。週の初めからそれに固執しているので、これは私を夢中にさせています...

4

1 に答える 1

1

サーバー環境での ODAC のインストール オプションについてよくわかりません。コードで TransactionScope を使用している場合にのみ、トランザクション モジュールが必要であることはわかっています。

プロバイダーが見つからないという問題は、Oracle が12c ビットでプロバイダー名を からOracle.DataAccess.Clientに変更したためです。Oracle.ManagedDataAccess.Client

接続文字列と EDMX ファイルの SSDL セクションの両方でこれを変更する必要があります。

<edmx:StorageModels>
  <Schema Namespace="Model.Store" Alias="Self" Provider="Oracle.DataAccess.Client" (...)

<edmx:StorageModels>
  <Schema Namespace="Model.Store" Alias="Self" Provider="Oracle.ManagedDataAccess.Client" (...)
于 2013-09-24T12:49:22.500 に答える