2012-12-06 58 views
5

我在MyWebpage.aspx.cs的方法LIK這樣:創建數據訪問對象時的最佳方法是什麼?

public partial class MyWebpage : PageBase 
{ 
    private readonly DataAccessLayer dataAccessLayer; 

    protected string GetMyTitle(string myVar, string myId) 
    { 
     if (string.IsNullOrEmpty(myVar)) 
     { 
      return string.Empty; 
     } 

     return dataAccessLayer.GetMyTitle(Convert.ToInt32(myId), myVar); 
    } 
} 

在DataAccessLayer類,我有一個會談到數據庫並執行DAL的東西,並返回標題methoud。

什麼是從MyWebPage.aspx.cs類訪問DAL的最佳做法(如同我需要每次創建一個新的DataAccessLayer()對象一樣嗎?我應該在我的PageBase類中創建它,還是每次我調用它時在後面?

回答

5

第一件事情是從後面的代碼或表示層訪問DAL一般是不是一個好的做法。因爲在這種情況下,您需要將業務邏輯代碼放在代碼後面(表示層),這會導致問題衝突,高耦合,重複和其他許多問題。所以,如果你是尋找最好的做法,我建議看看下面的鏈接:

這些都是真正的好書:

而且關於有用於調用DAL靜電功能。正如你所知靜態函數容易受到多線程的影響,所以如果你使用DAL函數中共享的任何東西(有時它的情況,如共享連接,命令等)它會破壞你的代碼,所以我認爲最好避免這一層的靜態功能。

0

代碼我是repository pattern的粉絲。每個人都有自己對其採取但我喜歡一個SQL表=>一個資料庫的想法和共享名稱,就像ORM工具。

實體框架可能會使您的DAL快速工作,並且仍然可以實施DAL模式,如存儲庫。

這是一個code generator,它接受一個sql連接字符串並給出了一個相當標準的企業數據訪問應用程序塊的實現。它不是很健壯,因爲它是針對平淡的sql架構設計的。如果您使用示例數據庫,它會爲您提供代碼示例,您可以使用它來設計符合自己喜好的數據訪問層。

+0

每個存儲庫一個表 - 但如果更改數據庫結構會發生什麼情況? –

+0

當數據庫更改時,您的模式建議不需要更改什麼? – TheDev6

+0

使用類似Entity Framework的東西在概念層面上進行建模,映射層映射到物理數據庫結構。這樣,業務層不需要知道某個實體是在一個表中實現的,還是三個。 –

相關問題