2009-08-19 41 views
1

我已經挖掘了以前提出的問題,並沒有找到重複的運氣。我很想從DB2模式(使用iSeries OLEDB提供程序)在.Net中生成基本的實體類。有沒有簡單的方法來做到這一點?我已經看過MyGeneration和CodeSmith,它似​​乎必須有一個更簡單的方法。從數據庫模式中生成類的類

在此先感謝。

編輯 我正在把iSeries標籤關掉,希望它能減少這個問題。任何人都有他們用來對付任何ADO.Net或OLEDB提供商的東西?我想我可以適應它與iSeries一起工作。

編輯#2重新添加iSeries標籤,並在幾天內接受我自己的答案,希望這將有助於未來某人。 +1迴應者,謝謝。

回答

0

經過更多研究,我決定自己編寫代碼生成器。我問的部分原因是因爲.Net的iSeries提供程序不是很健壯,所以沒有辦法枚舉模式信息。然而,尋找this question後,我就能夠使用簡單的內聯SQL這樣做:

//Enumerate schema tables (excludes views) 
select table_name from qsys2.tables where table_schema = 'schema_name' and table_type = 'BASE TABLE' 

//Enumerate table columns 
select * from qsys2.columns where table_schema = 'schema_name' and table_name = 'table_name' order by ordinal_position; 

也許這將幫助別人的未來。

+0

這可能會產生模式數據,但它是如何產生C#類定義的?你是否也想生成get和put metods來從數據庫中獲取行? – 2009-09-02 03:27:48

1

這也許是一個小長篇大論,而是一種方法是反向使用NORMA VS plug in然後生成通過附帶的插頭PLiX生成你的.NET類工程師的模式爲對象角色建模圖。

您可能會發現生成的類使用額外的成員進行裝飾,而這些成員可能不需要(它們被編碼以便在需要時可以在組件模型上下文中使用),但您可以輕鬆地去除這些額外的人工製品。

+0

感謝您的回覆。 – 2009-08-19 19:32:56

2

你有沒有試過Jeeves?這是一個用Perl編寫的模板驅動的代碼生成器。

通過Jeeves,您可以分別修改規範解析器和模板,並將Perl命令注入到模板中。

我沒有做的正是你想做的事,但我所做的就是以下幾點:

1)用於佔道經營作爲分佈式OO解析器,創造我的對象定義在規範文件中,是這個解析器可以讀取的格式。 2)我編寫模板以消耗OO解析器從我的規範文件生成的抽象語法樹。 3)這反過來在Perl中生成一個代碼生成器。我把這個代碼生成器稱爲pre-Buld事件(在VS 2005中),並且生成的代碼在那裏和那裏被編譯。

你必須建立你想要的模板(可能是規範解析器),但一旦你這樣做,你可以輸出到你想要的東西,而沒有額外的開銷。

+0

感謝您的回覆。 – 2009-08-19 19:33:26