我是新來NHibernate
,我努力工作教學貫徹的通用Repository模式和單位使用在ASP.NET MVC 3應用。我搜索了標題並發現了新的鏈接;但所有這些對我來說都是比較複雜的。我使用StructureMap作爲我的IOC。你能給我建議一些鏈接或博客嗎?如何實現通用倉庫模式和UOW NHibernate的3.2
回答
這裏有幾個項目的讀通:
- Advantage of creating a generic repository vs. specific repository for each object?
- How to make a Generic Repository?
實現我在最近的項目都使用看起來像:
public interface IRepository<T>
{
IEnumerable<T> GetAll();
T GetByID(int id);
T GetByID(Guid key);
void Save(T entity);
void Delete(T entity);
}
public class Repository<T> : IRepository<T>
{
protected readonly ISession Session;
public Repository(ISession session)
{
Session = session;
}
public IEnumerable<T> GetAll()
{
return Session.Query<T>();
}
public T GetByID(int id)
{
return Session.Get<T>(id);
}
public T GetByID(Guid key)
{
return Session.Get<T>(key);
}
public void Save(T entity)
{
Session.Save(entity);
Session.Flush();
}
public void Delete(T entity)
{
Session.Delete(entity);
Session.Flush();
}
}
謝謝;我知道了。但是現在,我怎樣才能通過注入創建一個'ISession'對象? '公共庫(ISession會話)',但似乎'ISession'只能通過'OpenSession'方法創建;例如,如何通過StructureMap使用這個存儲庫?能多解釋一下嗎? – 2012-03-04 19:15:06
@ king.net我自己在結構圖上使用ninject,但是類似的概念也適用。在ninject中,我會做這樣的事情:綁定
感謝幫助完整的答案,接受它;問候 – 2012-03-05 03:29:49
查看此解決方案 - https://bitbucket.org/cedricy/cygnus/overview
它是我們在生產MVC 1,2和3應用程序中使用的存儲庫模式的簡單實現。
當然,我們從那以後就知道我們非常感謝讓我們的查詢直接運行在ISession上。你有更多的控制他們的方式。那和Ayende告訴我們不要。
謝謝塞德里克!
謝謝。答案投了。問候 – 2012-03-05 18:57:27
- 1. NHibernate的倉庫模式
- 2. 存儲庫模式,UoW模式,純NHibernate會話
- 3. EF倉庫與UoW更新
- 4. MVC存儲庫模式和UOW
- 5. nHibernate [TransactionAttribute]爲UoW衝突與存儲庫模式
- 6. EF,UoW和倉庫 - 何時在WebForms中處理UnitOfWork?
- 7. 如何實現會話每會話模式,用的WebAPI/NHibernate的
- 8. 使用NHibernate和Spring.Net實現存儲庫
- 9. 存儲庫模式的通用接口繼承和類實現
- 10. FluentNhibernate和NHibernate 3.2
- 11. 不EF6的DbContext與UOW和存儲庫模式的默認
- 12. 如何實現多個數據庫的存儲庫模式
- 13. 在現有代碼庫中實現模擬倉庫
- 14. 實現通用存儲庫和工作模式單元
- 15. 設計模式:抽象工廠和通用倉庫
- 16. 我實現NHibernate存儲庫模式的問題
- 17. 數據倉庫的實際實現
- 18. 如何使用Slick 3.1和DDD實現多數據庫模式
- 19. C中的倉庫模式#
- 20. 實體框架的通用倉庫
- 21. 通用倉庫
- 22. 存儲庫和UoW模式與服務層
- 23. 模擬倉庫與真實倉庫/模擬數據
- 24. PHP設計模式工廠,倉庫和...?
- 25. 實現通用存儲庫模式 - 實體密鑰類型
- 26. 實體框架中的UOW和存儲庫asp.net應用程序
- 27. NHibernate和狀態模式持久性 - 一個很好的實現?
- 28. 倉庫模式聚合和聚合根與實體框架4.0
- 29. 流利的NHibernate和存儲庫模式
- 30. 如何在NHibernate中實現開放會話視圖模式?
NHibernate的ISession已經代表了一個工作單元和對存儲庫的訪問。 – 2012-03-04 16:59:11
存儲庫應該封裝數據訪問層,即它將使用但不會公開Nhibernate。和一個適當的設計的存儲庫(爲您的需要,一個通用的存儲庫是無用的)不應該需要工作單位 – MikeSW 2012-03-04 19:09:21