OOP与数据库的交互

时间:2015-04-22 19:40:50

标签: c# database oop

如果面向对象编程专注于由方法和数据组成的对象,那么使用C#,使用数据库的最佳OOP方法是什么?

例如,我想使用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 个答案:

答案 0 :(得分:1)

一般来说,我不希望将数据库访问逻辑放入类中,因为它会妨碍您在不需要数据访问的其他场景中使用它们的能力。所以我认为你的第二个选择是更灵活的选择。

但是,如果您已经了解Entity Framework等ORM解决方案,我建议您使用其中之一。 EF采用的方法更接近您使用POCO(普通旧C#类)的第二种方法,其他EF类负责将数据从这些对象移动到数据库中并返回。

总的来说,我的建议是使用实体框架和code first方法。