2015-04-22 68 views
0

如果面向對象的編程專注於由方法和數據組成的對象,那麼使用C#處理數據庫的最好的面向對象編程的方法是什麼?面向對象與數據庫的交互

例如,我想記錄使用C#類的東西,並將日誌記錄在SQL表中。保持中立所有其他因素的影響,這將是更「正確」,面向對象來講,要做到:

  • 創建爲氏被記錄了哪些類,以及包括
    (該方法是並列的數據庫訪問方法密切數據)

    public class Activity 
    { 
        public string ActivityProperty { get; set; } 
    
        public void SQLMethod1() {} 
    
        public void SQLMethod2() {} 
    } 
    

...或者,

  • 爲正在記錄的內容創建一個類,併爲數據庫訪問創建一個類
    (方法與數據並不緊密相關,但訪問數據的方式被視爲一個對象,即引用EF或另一個ORM)

    public class Activity 
    { 
        public string ActivityProperty { get; set; } 
    } 
    
    public class SQLMethods 
    { 
        public string SQLProperty { get; set; } 
    
        public void SQLMethod1(Activity activityParam) { } 
    
        public void SQLMethod2(Activity activityParam) { } 
    } 
    

...或者,也許是一個更好的設計將更加 「面向對象」?

+1

閱讀有關活動記錄,存儲庫,ORM的信息。 – CodeCaster

+2

對不起,但你的問題是waaaaaaaaaaaaay太廣泛,也表明你沒有做這麼多的研究。一般來說,你有一個映射到表上的行的對象,並且類包含的方法與SQL中的任何內容都沒有關聯。您可以使用db上下文對象上的其他方法來執行讀取/寫入操作。 – evanmcdonnal

+0

並閱讀關於固體http://www.codemag.com/article/1001061 –

回答

1

一般而言,我不希望將數據庫訪問邏輯放入類中,因爲這會妨礙您在不需要數據訪問的其他場景中使用它們的能力。所以我認爲你的第二個選擇是更靈活的選擇。

但是,如果您已經知道ORM解決方案(如Entity Framework),我會建議使用其中的一種。 EF採用的方法更接近您使用POCO(普通的舊C#類)的第二種方法,其他EF類負責將數據從這些對象移動到數據庫中並返回。

所以總的來說,我的建議是使用實體框架和code first方法。