2011-08-15 66 views
4

我有一個項目使用NHibernate(版本2.2)。爲了升級到NHibernate 3.2,我該怎麼做?升級到nhibernate 3.1

我需要在dll之後進行升級嗎?

  1. NHibernate.Linq.dll
  2. Iesi.Collections.dll
  3. Castle.Core.dll
  4. Castle.DynamicProxy2.dll
  5. Log4net.dll

我需要升級HBM文件?我需要升級hibernate.cfg.xml文件嗎?

+1

你不需要NHibernate.Linq了,但你需要更新所有的查詢,因爲NHibernate現在有自己的LINQ提供者,它屬於'Query'而不是'Linq'。你應該分支你的應用程序並在那裏進行升級,因爲毫無疑問,你需要修復你的查詢和映射,很多已經從2.1改變到了3.0。 – Phill

+0

你也應該接受一些你的問題的答案! – Phill

回答

8
  1. 當升級到3.2 NH你不需要NHibernate.Linq.dll了,用來獲得支持LINQ方法名是不Linq<T> - 其Query<T>現在
  2. 你不需要改變HBM文件
  3. 您將需要更新Iesi.Collections裝配
  4. 你不需要castle.dynamic代理DLL(你仍然可以使用它,但它不再需要)
  5. log4net的是not required anymore
  6. 你可能需要改變你的CFG文件,以change dynamic proxy settings

最簡單的方式來獲得最新版本的NH的所有必需的組件是使用Nuget

+0

我做到了。 它有錯誤。 由於Nhibernate.linq.dll不受Nhibernate.dll匹配(版本3.1)的誤差 消息是: 無法加載文件或程序集「NHibernate的,版本= 2.1.2.4000文化=中性公鑰= aa95f207798dfdb4」或其依賴之一。定位的程序集清單定義與程序集引用不匹配。 (異常來自HRESULT:0x80131040) 我必須升級Nh版本3.1,需要什麼版本的Nhibernate.linq.dll? – Ehsan

+0

我收到了相同的程序集引用錯誤! – Patricia

+1

要麼刪除NHibernate.Linq程序集,要麼將程序集重定向 – Sly

0

升級DLL和測試程序,通常這應該足夠了

+0

LINQ提供者不是100%兼容的。 –