C#-Aufzählungen automatisch aus Datenbank-Nachschlagetabellen generieren
Hintergrund:
In Unternehmensanwendungen werden häufig verwendete Suchwerte zur einfacheren Wartung häufig in Datenbanktabellen gespeichert. Wenn Sie mit solchen Daten in C#-Code arbeiten, möchten Sie möglicherweise aus Gründen der Typsicherheit und Codeklarheit eine Aufzählung definieren, die die Werte in der Tabelle widerspiegelt. Allerdings kann die manuelle Pflege dieser Aufzählung mühsam werden, wenn Änderungen an der Nachschlagetabelle vorgenommen werden.
Dynamische Aufzählungsgenerierung:
Um dieser Herausforderung zu begegnen, müssen Aufzählungen automatisch erstellt und basierend auf Werten in Datenbank-Nachschlagetabellen aktualisiert werden. Dies kann durch Codegenerierung erreicht werden, obwohl eine vollständig automatisierte Lösung bevorzugt wird.
Codegenerierungsmethode:
Ein effizienter Ansatz besteht darin, ein separates Projekt zum Generieren von Aufzählungen zu erstellen. Dieses Projekt enthält Code, der Werte aus der Datenbank extrahiert, die Aufzählungsdefinition erstellt und sie in eine Assembly kompiliert.
Beispielcode:
<code class="language-csharp">// 基于数据库值动态定义枚举 AssemblyName assemblyName = new AssemblyName("MyEnums"); AssemblyBuilder assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.RunAndSave); ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule(assemblyName.Name, assemblyName.Name + ".dll"); EnumBuilder myEnum = moduleBuilder.DefineEnum("MyEnum", TypeAttributes.Public, typeof(int)); // 从数据库检索数据 MyDataAdapter dataAdapter = new MyDataAdapter(); MyDataSet.MyDataTable myData = dataAdapter.GetMyData(); // 基于数据库行定义枚举文字 foreach (MyDataSet.MyDataRow row in myData.Rows) { myEnum.DefineLiteral(row.Name, row.Key); } // 创建枚举类型 myEnum.CreateType(); // 保存程序集 assemblyBuilder.Save(assemblyName.Name + ".dll");</code>
Vorteile der Codegenerierung:
Durch die dynamische Generierung der Aufzählung stellen Sie sicher, dass sie mit der Datenbank-Nachschlagetabelle synchron bleibt. Dadurch ist keine manuelle Wartung mehr erforderlich, die Codeduplizierung wird reduziert und die Flexibilität erhöht.
Integration mit anderen Projekten:
Sobald eine Enum-Assembly generiert wurde, kann sie von anderen Projekten referenziert werden, sodass Entwickler mit dynamisch definierten Enum-Werten arbeiten und IntelliSense-Unterstützung erhalten können.
Für automatisch generierte Post-Build-Ereignisse:
Um diesen Prozess vollständig zu automatisieren, können Sie Ihrem Enumerations-Build-Projekt ein Post-Build-Ereignis hinzufügen, das den Build-Prozess nach jedem Build auslöst und so sicherstellt, dass die Enumeration immer auf dem neuesten Stand ist.
Das obige ist der detaillierte Inhalt vonWie kann ich C#-Enums automatisch aus Datenbank-Nachschlagetabellen generieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!