2009-12-22 73 views
0

我有一個遺留的VB6應用程序,我在.Net中重寫。我之前沒有使用ORM軟件包(作爲喜歡瞭解SQL使用的老式類型),但是我已經看到了NNibernate的良好報告,並且很想將其用於此項目。我只想檢查一下,我不會在腳下射傷自己。重寫一個SQL/vb6應用程序 - 我應該使用nHibernate還是Linq

因爲我的新應用程序最初將與現有應用程序一起運行,所以我使用的任何ORM都必須使用現有的數據庫模式。另外,我需要使用SQL服務器文本搜索。從我收集的內容來看,LINQ to SQL不支持文本搜索,所以這將排除它。

該應用程序使用它自己的方法爲新對象分配ID - NHibernate會允許這個還是希望使用它自己的機制?

另外我已經讀過NHibernate做過緩存。我需要確保從NHibernate訪問數據庫時可以立即訪問NHibernate外部插入的行,反之亦然。

有4個或5個主表和10個附屬表。雖然幾個主表有多達一百萬行,但應用本身通常只會返回一些。用戶負載很低,所以我不認爲性能是一個問題。

目前我不確定它是ASP.NET還是win窗體,但是我會希望使用數據綁定。

在功能方面,應用程序不是特別複雜 - 重新實現它的預算大約是20個工作日,所以如果我要使用ORM,它必須是能夠快速爲自己付出代價的東西。同樣,我希望應用程序易於部署,不需要一些怪物企業框架。

任何想到這是否適合NHibernate的項目將不勝感激。

回答

0

我已經成功地將一個NHibernate領域模型應用到了一些遺留數據庫模式 - 它現在還沒有證明是不可能的,但它有時並非沒有困難。最簡單的映射模式是那些所有主鍵和外鍵都是單列鍵的映射,但如果表格數量很少,即使您的映射不是這樣,您也應該能夠相對快速地進行映射。

我強烈建議,尤其是考慮到你的時間表,你使用Fluent NHibernate來完成你的映射 - 學習XML映射文件語法的時間可能太大了。但是,您將需要使用XML映射文件來處理全文索引(假定這就是您的意思),將它們編寫爲命名SQL查詢。 (有關詳細信息,請參閱nhibernate.info documentation)。

建議您花費一兩天的時間嘗試爲一些表格創建模型,然後編寫與其交互的代碼。隨時會有人準備好回答您的任何問題。

您可能還想看看Linq到NHibernate--我們發現它有助於我們將更多的數據庫訪問內容抽象到一個簡單的界面之後。但是它是流利的NHibernate,它會給你在NHibernate學習曲線上「作弊」方面最大最快的勝利。

0

您也可以查看LLBL Gen Pro。這是一個非常成熟的ORM,可以處理很多不同的場景。

3

雖然ORM是好的,但是我個人不會承擔嘗試在20天項目中使用任何ORM的風險,如果我不得不隨時吸收ORM學習曲線。

如果您擁有ADO.NET基礎架構,那麼您可以適應並且不需要ORM功能即可生存,這是風險較低的方法。

最終你應該學習ORM和Linq(不一定是Linq To Sql),但是當沒有即時的時間壓力時,它會更加愉快。

這聽起來更像是一個風險管理問題,並且需要您做出個人決定,您是否願意接受新的(對您)技術而看到項目失敗。

相關問題