如果面向对象编程专注于由方法和数据组成的对象,那么使用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) { }
}
...或者,或许更好的设计会更多"面向对象"?
答案 0 :(得分:1)
一般来说,我不希望将数据库访问逻辑放入类中,因为它会妨碍您在不需要数据访问的其他场景中使用它们的能力。所以我认为你的第二个选择是更灵活的选择。
但是,如果您已经了解Entity Framework等ORM解决方案,我建议您使用其中之一。 EF采用的方法更接近您使用POCO(普通旧C#类)的第二种方法,其他EF类负责将数据从这些对象移动到数据库中并返回。
总的来说,我的建议是使用实体框架和code first方法。