簡體   English   中英

將表中的數據映射到枚舉的 XSD 或 CLR object

[英]Mapping data in a table to enumerated XSD or CLR object

我目前正在使用標准 4.0 Web Forms 應用程序(無動態數據),我想嘗試使我的站點配置盡可能動態。

我有一個數據庫表,其中每一行代表一個文件類型。 我想創建一個流程,其中站點配置足夠動態,可以根據對這張表的更改來處理和吸收對其配置的更改。

目前,我的 web.config 文件的配置部分中有一組條目,它表示文件類型的集合。 因此,如果我想使用 PDF 文件,也許我會在文件類型部分使用類似<add key="Pdf">的內容。

這些鍵中的每一個在我的數據庫中都有一個條目,我使用一個枚舉來 map 一個友好的名稱/CLR object 到數據庫值(整數)。 我喜歡在標簽屬性中輕松使用它的方式,例如<cc1:MyControl FileType="Pdf"> ,我可以結合使用數據庫數據和 web.config 中的其他屬性來允許 Intellisense 真正做到事物。

問題是,這個枚舉目前是硬編碼的,我不知道如何讓這個動態處理未來的添加或刪除。 就目前而言,如果我想添加新的文件類型,我必須在數據庫中添加一個新行,在 web.config 中為其添加一個條目,然后使用新 ID 更新枚舉。 這對我來說沒問題,但它有點手動,而且我不能代表我們的支持人員遵循該程序的能力。

我認為在概念上對我造成障礙的原因是,我沒有將 DB 模式轉換為 CLR 模式,而是實際上試圖將模式 object 的實例集合轉換為一種類型。

我正在使用實體框架,因此利用其中的某些東西沒有問題。

我正在考慮使用 xsd.exe,但由於我不熱衷於安排它運行或調用它來刷新架構,因此讓開發人員 go 通過該過程可能比手動更新枚舉更笨拙。 但是,如果有什么我可以做的事情,我非常願意去看看。

澄清一下,我並不是真的很想在 web.config 中使用它,這就是我如何讓它以硬編碼的方式工作得很好,很漂亮。

理想情況下,我想做的是讓源自數據庫的數據自動神奇地解析和/或識別,我可以將其名稱或以簡單的英語表示在標簽屬性中。 我認為這很可能看起來像客戶端引用的一些 xml 模式文件。

如果您有任何建議,我將不勝感激。 多謝你們。

我最終離開了 web.config。 我本可以進行自己的轉換,但我決定改用 T4 模板。 我將存儲在 web.config 中的數據移動到數據庫中的字段中,然后我使用 T4 模板查詢數據庫並獲取所有行並為它們生成枚舉值。 然后我創建了隱式運算符來將枚舉類型轉換為實體,反之亦然,例如get{ return context.Where(myVar => myVar.myKey == (int) myEnumVal);

所以現在我的支持不必破解代碼,他們只需在數據庫中添加一行,設計時模板就會生成新值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM