2015-04-22 41 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方法。