2011-08-17 255 views
3

我有一個相當大的XSD文件可用hereC#:從XML模式(XSD)文件自動生成DDL和ORM類

我要生成從該文件的以下內容:

  1. 生成DDL(PostgreSQL的)時,DDL應當包含初始值在適當情況下,如由「允許」的值在XSD指定

  2. 生成一個ORM,讓我在一步中創建的數據庫中的記錄進行CRUD操作1

任何人都可以提出一個工具或一系列工具/技術來實現這一目標?

如果我不得不推出我自己的解決方案,有人可以爲XSLT提供一個很好的教程(最好是一本食譜 - 因爲我已經知道一些XML/XPath)。

順便說一句,我在Windows上嘗試過xsd.exe - 它失敗了,並打印出一條錯誤消息,提示XSD文件中存在循環引用。然後我嘗試單聲道xsd.exe,這工作 - 但創建的文件有一些無效的聲明。我猜測(也許不正確),xsd.exe不是實現這些雙目標的方法 - 如果我錯了,讓我知道。

而且,我把在Ann Lewkowicz's XSLT transform file產生從XSD文件中的DDL - 但似乎已經陷入了一個無限循環 - 也抱怨「無限循環」

所以我需要用以下幫助:

  • 首先,任何人都可以測試/檢查XSD file確實搞砸了? - 如果是,如何解決?
  • 如何從XSD文件生成DDL和ORM?
+2

關於生成DDL/ORM,你看過T4嗎?我個人認爲T4比XSLT更適合這些任務(http://www.olegsych.com/2007/12/text-template-transformation-toolkit/)。 – FuleSnabel

+1

XSD已擰緊。當我嘗試在VS中打開它時得到此錯誤:此架構是無效的XSD架構,並具有以下錯誤:'http://www.w3.org/XML/1998/namespace:lang'屬性是未宣佈。 –

+0

@hugh jadick:謝謝您的確認。我已經解決了這個問題(不是上傳的固定文件),所以剩下的唯一問題是如何從XSD生成ORM和DDL。我設法在Visual Studio中打開固定的XSD文件(看起來非常好!)。當然,必須有辦法從Visual Studio生成DDL和ORM? – oompahloompah

回答

0

就我個人而言,我會寫自己的發電機。那裏可能有很好的發電機,但我還沒有看到。我嘗試過的所有嘗試(儘管我從來沒有用XSD作爲起點)生成可怕的代碼,更糟糕的是,我們無法自定義來處理每個不可避免的問題。

這樣做的工作量比人們想象的要少很多,並帶來許多好處,尤其是您實際上可以完全控制生成的內容。你甚至可以(並且很容易)將它提升到下一個級別並在運行時生成這些東西。如果模式是最終的,後者是沒有意義的,但如果模式不斷髮展,則可以節省大量時間。

我很肯定這不是你希望的答案,如果有人知道這個工作的好工具,我也會很感興趣。