好吧,我只是進入nhibernate(使用流利)。我喜歡它的原因使用nHibernate和存儲庫模式,需要一些方向
一件事是,我可以使用庫模式(從NHibernate的犀牛博客讀到它)。
基本上使用泛型,我可以創建,將工作翻過我所有的數據庫表的方法。
public interface IRepository<T>
{
T GetById(int id);
ICollection<T> FindAll();
void Add(T entity);
void Remove(T entity);
}
public class Repository<T> : IRepository<T>
{
public ISession Session
{
get
{
return SessionProvider.GetSession();
}
}
public T GetById(int id)
{
return Session.Get<T>(id);
}
public ICollection<T> FindAll()
{
return Session.CreateCriteria(typeof(T)).List<T>();
}
public void Add(T t)
{
Session.Save(t);
}
public void Remove(T t)
{
Session.Delete(t);
}
}
然後我繼承庫類,然後我可以添加特定於該實體的方法。
當試圖添加一個更新的方法,有人提到,庫模式是假設作用於收藏?我在這裏看錯了嗎?爲什麼我無法創建更新方法?
我嘗試添加一個更新的方法,但我很困惑,我將如何處理會話,並更新數據庫?
我想爲每個實體的所有我的數據庫訪問一個地方,所以UserRepository將所有基本的CRUD然後也許一些其他的方法,如GetUserByEmail()等
我認爲其誤導性暗示的工作和資源庫模式的單元是可以互換的,因爲他們解決不同的問題。我對Ayende的這篇文章很熟悉,雖然我確實認爲它確實有一些事實,但請記住它只是一個意見,不應該作爲事實陳述。 – 2009-08-18 22:24:10
ight,但是如果你正在學習NH,那麼從Repository模式開始(在每次調用repo.Update()時都會刷新)是一個壞習慣。或者你最終可能會寫出一些怪異的Repo和UoW的混合體,看起來像是Repo,但仍然需要被沖刷掉,或者錯過了這個不連貫的UoW的偉大。在我看來,宅基地已經拿起了一些教程,正在邁出他的第一步,並且爲了他所需要的走向稍微錯誤的路線,以及學習NH的最佳途徑是什麼。 – mcintyre321 2009-08-18 22:37:24
但是,你說得對,我聽起來像是一個全面的聲明。回購模式在正確的情況下非常有用。我應該說「在這種情況下,國際海事組織的回購模式正在包裝的東西......」 – mcintyre321 2009-08-18 22:38:56