簡體   English   中英

制作通用的getter和setter

[英]Making generic getters and setters

我有一個問題,我必須從架構中的所有表中獲取列名及其值,並在網格中顯示結果。 我已經使用了直接方法,但是我必須實現SqlSiphon結構。 為此,我必須對模式中每個Table的每一列進行getter和setter方法。

我應該使用什么來從表中動態獲取列名稱及其值。

SELECT * FROM INFORMATION_SCHEMA.COLUMNS 
WHERE 
TABLE_NAME = '" + @Tablename1 + "' AND TABLE_SCHEMA='dbo'"

最佳的動態解決方案是什么? 最好使用List,Dictionay或2d Array之類的東西來提供列名和列值?

一些建議:

  • 對於您要實現的目標,我尚不完全清楚,但可以考慮使用ORM(Linq2SQL,WEF,NHibernate)
  • 在.NET中,代表數據庫表的合適類型是DataTable

編輯 :再讀幾遍后,我想我明白您的要求了-您已經有一個數據庫/架構,並且想要自動創建SqlSiphon所需的實體類。 這稱為“數據庫優先”(與“模型優先”相對)。 但是,從SqlSiphon文檔的簡短掃描來看,它似乎不支持數據庫優先。 這就是為什么要嘗試將列放入網格中的原因-以便更輕松地手動為SqlSiphon創建實體類?

Edit2 :請注意,嘗試在頻繁修改其架構的數據庫之上使用ORM會出現問題。 我的下一個猜測是,您正在嘗試弄清楚如何在SqlSiphon中創建一個實體類,該實體類可用於檢索數據庫模式信息,例如表列? 我仍在努力了解您在這里實際要問的問題-也許您可以更新您的問題?

Edit3 :我認為您問題的答案是采用不同的設計方法-像SqlSiphon這樣的ORM不能用於檢索和修改數據庫模式本身。

可能值得退后一步,與其他人如何解決類似問題進行比較。

通常,數據庫中的每個表都代表一個實體,每個實體也都有一個類,並且可以使用ORM系統來避免重復工作。 因此,在典型的系統中,您有一個用於客戶的表,一個用於發票的表,一個用於發票行的表等,然后是一個代表客戶的類,一個發票類,一個發票行類等等。當您以后添加功能(以及可能的列/屬性)時,您可以更改類,而不僅僅是查看數據庫中的列-您當然可以用XML文檔修飾它們並獲得Intelisense的好處。

有許多ORM系統,每個都有其優缺點,但是我個人喜歡將LINQ to SQL添加到現有數據模型中。

暫無
暫無

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

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