C# と Enterprise Library Data Access Layer (ELD) を使用してデータベース ルックアップ値の列挙を自動的に作成する
この記事では、エンタープライズ ライブラリ データ アクセス層 (ELD) を利用して、データベース ルックアップ テーブルに格納されている値から列挙を自動的に作成する方法について説明します。
列挙型アセンブリの動的生成
ソリューション内に別のコンソール アプリケーション プロジェクトを作成します。このプロジェクトは列挙アセンブリの生成を担当します。 EnumBuilder
を定義し、MyDataAdapter
と MyDataSet
を使用してデータベースからデータを取得します。データベース内の各行に列挙リテラルを作成し、それらを EnumBuilder
に追加して、最後に列挙を作成します。生成されたアセンブリを目的の場所に保存します。
サンプルコード:
<code class="language-csharp">// 获取当前应用程序域。 AppDomain currentDomain = AppDomain.CurrentDomain; // 创建一个动态程序集。 AssemblyName name = new AssemblyName("MyEnums"); AssemblyBuilder assemblyBuilder = currentDomain.DefineDynamicAssembly(name, AssemblyBuilderAccess.RunAndSave); // 定义一个动态模块。 ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule(name.Name, name.Name + ".dll"); // 定义一个枚举。 EnumBuilder myEnum = moduleBuilder.DefineEnum("EnumeratedTypes.MyEnum", TypeAttributes.Public, typeof(int)); // 从数据库获取数据。 MyDataAdapter someAdapter = new MyDataAdapter(); MyDataSet.MyDataTable myData = myDataAdapter.GetMyData(); foreach (MyDataSet.MyDataRow row in myData.Rows) { myEnum.DefineLiteral(row.Name, row.Key); } // 创建枚举。 myEnum.CreateType(); // 保存程序集。 assemblyBuilder.Save(name.Name + ".dll");</code>
生成されたアセンブリへの参照を追加します
ソリューション内の他のプロジェクトで動的に生成されたアセンブリを参照します。これにより、生成されたアセンブリで定義された列挙を使用し、IntelliSense 機能を含めることができます。
ビルド後のイベントを構成する
EnumeratedTypes
プロジェクトにビルド後のイベントを追加します。このイベントはプロジェクトを開始し、ビルドのたびに MyEnums.dll
ファイルを生成します。
その他の注意事項
EnumeratedTypes
プロジェクトが最初にビルドされるようにプロジェクトのビルド順序を構成します。これにより、生成されたアセンブリに関連する依存関係の問題が回避されます。
これらの手順に従うことで、データベース ルックアップ テーブルの値に基づいて列挙型を自動的に作成し、手動で更新することなく列挙型がデータベースと確実に同期されるようにすることができます。
以上がEnterprise Library Data Access を使用してデータベース ルックアップ値から C# 列挙型を自動的に生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。