2008-11-15 55 views
0

我在C#和MySQL的個人項目開始玩耍。C#和MySQL - 輕柔的框架替代方案

我熟悉使用Gentle Framework(使用MyGeneration生成基於數據模型的類)。這是我喜歡溫柔的東西;

  • 簡單易用[class] .Retrieve(id)/ [object] .Persist()語義與強類型的字段;
  • 我從DB數據模型開始,選擇何時生成新的代碼文件;
  • MyGeneration允許一些'手動代碼部分',這些代碼部分被世代保存...
  • ...和部分類允許我在並行文件中添加永久代碼。簡單的只讀屬性(如來自FirstName和Surname成員的Person對象的'FullName') - 或者我可以使用繼承;
  • 我覺得這是一種可以容忍且快速創建DAL的方式,併爲其添加了某些類似於業務對象層的功能。

不幸的是,有效地查詢,我最終會使用查詢/ SqlCommands公平一點,並且依賴於列名等弱類型的引用,並出現風險迴避對象的經紀人,因此緩存的優勢。無論如何,Gentle不再被開發,現在看來是考慮替代品的好時機。

那麼,我應該考慮什麼?

  • 強類型的ADO數據集的生成是可能的,但現在看來似乎將很難添加到它(例如是「全名」虛擬列)的方式更新與表結構後,將持續數據集的再生。
  • NHibernate似乎有很多粉絲......但我的第一個看起來似乎表明XML數據定義是王道,而不是數據庫中現有的數據模型。它對依賴關係看起來也相當重要;
  • SubSonic演示似乎暗示它會生成文件,並且在WebAppProjects的演示中,看起來它可能會以我可以添加或繼承的方式生成文件;
  • MySql Connector.Net工具似乎不支持Linq的數據集生成(例如通過拖放操作),我懷疑這是強類型數據訪問的關鍵需求。

您的想法將不勝感激!預先感謝您...

回答

0

link text我會去亞音速,成熟DAL發電機和很大餘量提高了生產效率。

我們已經將它與MySQL和SQL Server一起使用 - 沒有頭痛。爲表,存儲過程,列名生成類。所以每當我們發現自己在做Somthing Dot Intellisense移動箭頭鍵和分號時。

任何時候你的模式改變,你可以重新生成這些類,你在家。此外,您可以通過創建部分類來擴展它們。

它支持幾乎所有的SQL語義 - 連接,通過主鍵加載集合,添加WHERE子句,Order by,Count,Top,調用存儲過程,視圖等,並且直觀的語法是大加。給你一些瞥見 - 對於Books表[BookID-PK,title,AuthorID],它會生成幾種類型的方法。

  • 插入方法,該方法取標題,的AuthorID
  • 空的列是可選 參數a.k.a C#空類型?
  • 更新方法至極需要的BookID,屬於AuthorID,標題由主鍵
  • 負載書(可用時顯示詳細信息頁)
  • BookCollection與圖書實體,只要打電話BookCollection.Load,你有書準備綁定到列表任何數據綁定控件

這裏是快速鏈接。

感謝, Maulik莫迪

+0

問了幾個_年後,我終於將這個答案標記爲'accepted',因爲我確實繼續嘗試SubSonic。 – Nij 2013-09-19 07:12:58

2

我有一些與溫柔的經驗,我不得不承認,這是相當低效的查詢。我會建議看看NHibernate,因爲它有一個豐富的社區。確實,XML定義是首選,但有些方法可以使用類級別屬性進行映射。

SubSonic(特別是3.0 version)看起來非常有希望與它的使用T4 templates。這應該讓你更好地控制代碼生成。它也可以做LINQ。

不要投資LINQ-to-SQL,因爲謠言即將中止。

2

假設.Net 3.5 Framework是一個可供選擇的應用程序,那麼您可以看看微軟的實體框架(與.Net 3.5 Service Pack 1一起發佈)。

實體框架允許根據您的數據庫架構生成DAL類,但這些類的維護隱藏在XML文件的後面,可以通過Visual的簡單命令快速方便地更新以解決架構更改Studio IDE。

我正在一個項目中,我們使用實體框架與MySQL的幾個問題。 該選項的主要缺點是由MySQL提供的官方.Net連接器尚不支持實體框架 - 有一種付費替代方法,稱爲MyDirect.Net

0

感謝Filip和Snorkpete的建議 - 您的意見和建議鏈接證明有幫助。

我可能會先嚐試亞音速;它看起來像我會理解並能夠快速前進(今天應該回答這個問題),我很驚訝地發現,MS使用編寫它的人間接地支持它。 T4也看起來很有趣。

實體關係模型也看起來很有趣,並且指向MyDirect的鏈接可能對未來有所幫助。唯一的缺點是期望; MS通過簡單的拖拽方式創建最初的設計,然後在修改或保持最新時變得更加困難,從而簡化了過去的方法。

無論如何,再次感謝你們,我會盡力讓這個問題得到更新。

NIJ

+0

不客氣。 我還記得看到另一個名爲LightSpeed的實體框架(http://www.mindscape.co.nz/products/LightSpeed/)。它是有限的免費版本的商業。有趣的是,他們的主要人物(http://andrewpeters.net/)被微軟聘用來開發Entity Framework。 – 2008-11-19 17:34:33

0

我使用了一下SQL,生成出表的強類型的對象,它是基於一個由凱德科比建的,但我做了一些調整。它生成的代碼不是100%可編譯的,但它可以節省大量的鍋爐板工作,並且間隙很容易填滿(如果我是你,我會使所有屬性成爲完全成熟的屬性,或者承受jon雙向飛碟的憤怒!)

http://NotifyURL.com/sql