「エッセイの前でODP.NET(Oracle.ManagedDataAccess.dll)Oracleデータベースアクセスのコード生成ツールDatabase2Sharpを使用して、クライアントは無料のインストールのOracleを達成するため、Oracleの互換の32ビット、64ビットのドライブは、」コード生成ツールでの使用について説明しODPアクセスOracleデータベースへの.NET(Oracle.ManagedDataAccess.dll)、我々が対処する方法の枠組みの中で、このアプリケーションを使用する必要がある場合は?私たちは主にマイクロソフトエンタープライズライブラリ(現在はバージョン4.1を使用して)の基礎となる開発フレームワークを使用しているので、それはそれはEntLibContrib.Data.OdpNetの使用があるので、公式のOracle拡張機能を使用する場合、(エンタープライズライブラリの拡張ライブラリはOracle.DataAccess.dllを使用しました)が、この方法では、32ビットおよび64ビットの問題に限定されている。我々はODP.NET(Oracle.ManagedDataAccess.dll)モードを使用する場合は、国内のサポートデータベースに似た拡張エンタープライズ、することができ、独自のライブラリのサポートを使用することができます- -統一互換性を達成するために、競合を避けるために、ライブラリOracle.ManagedDataAccess 32と64を使用して、データベース理論、同じ夢。
1、延長サポートODP.NET(Oracle.ManagedDataAccess.dll)アクセス
サポートへのカスタム拡張機能を実現するために、我々は同様の拡張ライブラリになる前に、当社のカスタムの夢をデータベースで書かれたように、次のエッセイを理解することができます前に、この点では、処理するためのライブラリーのビジネスライブラリを拡張する必要がある「Winフォームの開発エンタープライズライブラリに基づきます拡張操作の夢に国内のデータベースをサポートして達成するためのフレームワークは、「我々は今、ODP.NET(Oracle.ManagedDataAccess.dll)モード用に拡張サポートを増加しています。
まず、我々は、ナゲットの方法により事業拡大やMySQLの他の拡張のための参照ライブラリプロジェクトを作成し、対応するOracle.ManagedDataAccess.dllライブラリを取得し、あなたはいくつかの調整を行うことができます。
以下のコードに似てOracleDatabase
使用してシステムを。 使用してSystem.Dataを。 使用してSystem.Data.Commonを。 使用してMicrosoft.Practices.EnterpriseLibrary.Commonを。 使用してMicrosoft.Practices.EnterpriseLibrary.Dataを。 使用してMicrosoft.Practices.EnterpriseLibrary.Data.Configurationを。 使用してOracle.ManagedDataAccess.Clientを。 名前空間EntLibContrib.Data.OracleManaged { /// <要約> /// <パラ> オラクル数据库对象(使用ODP驱动)</パラ> /// </要約> /// <備考> /// <パラ> ///内部データベースに接続するには、OracleからOracleProviderを使用しています。 /// </パラ> /// </備考> [DatabaseAssembler(typeof演算(OracleDatabaseAssembler))] パブリック クラスOracleDatabase:データベース { /// <要約> /// 初期化の新しいインスタンス<CREF = "OracleDatabaseを参照してください「/> クラス /// 接続文字列を持ちます。 /// </要約> /// ます。<param name = "のConnectionString"> 接続文字列。</ param>の 塩基(れたconnectionString、OracleClientFactory.Instance) { } /// <要約> /// <パラ> ///は用の区切パラメータに使用されるトークンのパラメータを取得 /// Oracleデータベース。</パラ> /// </要約> /// <値> /// <パラ> '?' シンボル。</パラ> /// </ value>の 保護 のchar ParameterToken { 取得 { リターン ' :' ; } } .........
メインは、Oracleの名前として、Oracleの缶の対応するタイプを変更することで、同様のパラメータの兆候がある:他の場所、それらを繰り返す、ない調整するための一つ他の1。
終了したら、アセンブリ名を変更し、EntLibContrib.Data.OracleManaged.dllにコンパイルすることができます。
2、アイテムデータベース構成設定アプリケーションフレームワーク
コンフィギュレーション・ファイルに示すように、上記の手順を実行して、我々はそれが通常を解析し、処理することができ、次の設定情報を追加することができます。
二つの方法の上に使用し、1は完全なデータベースのサポートに次のファイルの情報を示すような方法は、1はここだけで、EntLibContrib.Data.OracleManagedの道解放されEntLibContrib.Data.OdpNetの公式拡張機能です。
<?XMLバージョン= "1.0" ?> < 設定> < configSections > < セクション名= "dataConfiguration" タイプ= "Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings、Microsoft.Practices.EnterpriseLibrary.Data" /> < セクション名= "oracleConnectionSettings" タイプ= "EntLibContrib.Data.OdpNet.Configuration.OracleConnectionSettings、EntLibContrib.Data.OdpNet" /> </ configSections > < のconnectionStrings > <! 追加名= "SQLServerの" providerNameで= "System.Data.SqlClientの" れたconnectionString = ";データソース=(ローカル);初期カタログ= WinFramework;セキュリティ情報= Falseのを永続統合セキュリティ= SSPI" /> <! - オラクルを数据库的连接字符串- > < 追加名= "神託" providerNameで= "System.Data.OracleClient.dllへ" たconnectionString = "データソース= ORCL;ユーザーID = WHC;パスワード= WHC" /> <! - MySQLの数据库的连接字符串- > < 追加名= "mysqlの" providerNameで= "MySql.Data.MySqlClient"ConnectionString= "サーバ= localhostの;データベース= WinFramework; UID =ルート; PWD = 123456;" /> <! - 接続文字列PostgreSQLデータベース- > < 追加名= "Npgsqlの" providerNameでは= "Npgsqlの" れたconnectionString =「サーバーローカルホスト=; = 5432ポート;データベース= Postgresでは、ユーザーID =のPostgres;パスワード= 123456 " /> <! - パスのシンボル| DataDirectoryの|現在の実行ディレクトリの代表- > <! - 接続文字列のデータベースSQLiteの- > < 追加名= "SQLiteの" providerNameで= "System.Data.SQLite" たconnectionString = "データソース= | DataDirectoryの| \ WinFramework.db;バージョン= 3;" /> <! - 接続文字列のMicrosoft Accessデータベース- > < 追加名= "アクセス" providerNameで= "のSystem.Data.OleDb" たconnectionString =「プロバイダ= Microsoft.Jet.OLEDB.4.0;データソース= | DataDirectoryの| \ WinFramework.mdb;ユーザーID =管理者;ジェットOLEDB :データベースのパスワード=; " /> <! - IBM DB2データベースの列に接続- > < 追加 名=" DB2 " providerNameで="は、IBM.Data.DB2 " たconnectionString ="データベース= WHC; UID = WHC; PWD = 123456 " /> <! - 接続文字列OdpNet実施形態のOracleデータベースを使用して- > < 追加 名=" ORACLE2 " providerNameで="Oracle.DataAccess.Client」 のConnectionString= "データソース= ORCL;ユーザーID =勝つ;パスワードを=勝ちます;" /> < 追加 名= "oracle3" providerNameで= "OracleManaged" たconnectionString = "データソース=(DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST = localhostを)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED) (SERVICE_NAME = orcl.mshome.net)));ユーザーID =勝つ;パスワード=勝つ" /> </ のconnectionStrings > < dataConfiguration defaultDatabase = "oracle3" > < providerMappings > < 追加でdatabaseTypeを=" EntLibContrib.Data.MySql.MySqlDatabase 、EntLibContrib.Data.MySql」 /> < 追加でdatabaseType = "EntLibContrib.Data.SQLite.SQLiteDatabase、EntLibContrib.Data.SqLite" 名前= "System.Data.SQLite" /> < 追加でdatabaseType = "EntLibContrib.Data.PostgreSql.NpgsqlDatabase、EntLibContrib.Data.PostgreSqlを" 名前=" Npgsqlの" /> < 追加でdatabaseType = "EntLibContrib.Data.DB2.DB2Database、EntLibContrib.Data.DB2" 名前= "は、IBM.Data.DB2を" /> < 追加でdatabaseType EntLibContrib.Data.OdpNet.OracleDatabase =を" 、EntLibContrib.Data.OdpNet " 名前="オラクル。DataAccess.Client」 /> < 追加でdatabaseType = "EntLibContrib.Data.Dm.DmDatabase、EntLibContrib.Data.Dm" 名前= "Dmの" /> <! - 增加ODP.NET(Oracle.ManagedDataAccess.dll)方式的扩展支持- > < 追加でdatabaseType = "EntLibContrib.Data.OracleManaged.OracleDatabaseは、EntLibContrib.Data.OracleManaged" 名前= "OracleManagedを" /> </ providerMappings > </ dataConfiguration > < のappSettings > </ のappSettings > < スタートアップuseLegacyV2RuntimeActivationPolicy = "真" > <supportedRuntime バージョン= "V4.0" SKU =」。NETFramework、バージョン= V4.0" /> < supportedRuntime バージョン= "v2.0.50727の" /> </ スタートアップ> </ 設定>
私たちは互換性のあるアクセスデータベースの様々なを達成することができることを下のようにします。
異なるデータベースを使用して、我々は、各テーブルオブジェクトの内容を置かれたデータ・アクセス層DALSQLに関連テーブル生成のSQLServerデータとして処理を生成するアクセス層異なるデータベース、する必要がありますが、に基づく処理の関連サブクラスのおかげデータベースのコード生成、コードはほとんど調整する必要がありません。
レッツは、以下に示すように、テスト、テストコードにこのODP.netの方法をサポートするために、コードのシンプルなピースを書きます。
private void btnGetData_Click(object sender, EventArgs e) { string sql = "select * from T_Customer";// + " Where Name = :name"; Database db = DatabaseFactory.CreateDatabase(); DbCommand command = db.GetSqlStringCommand(sql); //command.Parameters.Add(new OracleParameter("name", "张三")); using (var ds = db.ExecuteDataSet(command)) { this.dataGridView1.DataSource = ds.Tables[0]; } }
测试界面效果如下所示。
以上这些处理,可以适用于Web框架、Bootstrap开发框架、Winform开发框架、混合式开发框架中的应用,也就是CS、BS都可以使用。