2009-12-04 42 views
1

我正在使用nHibernate。 我的課程是POCO,它與我的數據庫表格1:1映射。 我創建了一個IGenericDAO - > GenericDAO,它完成了我所有的基本CRUD。 (資料庫) 每個表都有一個DAO類,所以:對我的DAL層有什麼建議嗎?

公共類的UserDAO:GenericDAO

任何表的具體查詢將在tableDAO類去。

然後我有一個工廠,IDAOFactory。

public class NHibernateDAOFactory : IDAOFactory 
{ 
    public static UserDAO GetUserDAO() 
    { 
     return new UserDAO(); 
    } 
} 

可能的改進:

IDAOFactory dbFactory = new NHibernateDAOFactory(); 

我在想創造的:

public class DAOFactoryFactory 
{ 
     public static IDAOFactory Load() 
     { 
     return new NHibernateDAOFactory(); 
     } 
} 

這樣,我有一個單一的 1.只是讓我的web應用程序是不是有散落在需要交換數據庫層的情況下更改點。 (即在linq2sql和nhibernate之間切換,但不確定這在現實中是可能的)

任何關於如何改善這個問題的建議/指針,還是非常穩固?

+0

爲什麼您認爲您可能需要更換ORM? – 2009-12-06 02:34:31

回答

1

您可能會考慮使用DI容器,而不是希望只有一個地方,您的工廠可以保護您免受進一步的更改。另外,調用工廠方法Load有點令人困惑 - 爲什麼不把它叫做CreateDAO呢?

0

你將能夠交換ORM實現的機會很少。我會使用IoC容器(StructureMap)。爲您的Dao定義接口,然後通過ioc容器將它們注入到您的服務中。

相關問題