我想弄清楚我应该在哪里为每个实体放置数据库操作。在此混淆之前,对于每个实体,我在提供程序类中执行所有这些数据库操作。 Provider类意味着每个类都有一个提供者。如:
class Member
{
public string FirstName;
public string LastName;
}
class MemberProvider
{
//Singleton
//Do database operations
......
public List<Member> GetItems(FirstName = null, LastName = null)
{
// run store procedure
//this returns List<Member> if any
}
public Member GetItem(int? Id = null,FirstName = null, LastName = null)
{
// run store procedure
//this return Member if any
}
....
}
然后当我需要一个带有一些过滤的成员列表时,我这样做:
List<Member> members = MemberProvider.Instance.GetItems(FirstName = "John", LastName = "Black");
问题是如何在实体本身中完成与实体相关的所有数据库操作?这是好习惯吗?我应该阅读什么来理解这个概念?
提前致谢。
答案 0 :(得分:5)
答案 1 :(得分:4)
我建议使用Repository模式。 在这里,您可以获得很好的介绍和示例代码:Using Repository and Unit of Work patterns with Entity Framework 4.0
和另一个Implementing the Repository and Unit of Work Patterns in an ASP.NET MVC Application
答案 2 :(得分:3)
您应该考虑使用“Seperation of Concerns”原则。因此,另一个班级应负责粗暴行动。
您可以考虑查看存储库模式。 Patrik Löwendahl编写了一个易于阅读的教程。
答案 3 :(得分:2)
我觉得数据库操作应该在一个单独的类中。看一下Single Responsibility Principal http://www.objectmentor.com/resources/articles/srp.pdf和Repository设计模式http://martinfowler.com/eaaCatalog/repository.html。