【发布时间】:2014-12-25 11:43:03
【问题描述】:
我正在开发 asp.net mvc5 Web 应用程序,我正在使用实体框架作为数据访问层。每当我开始实现新的需求时,我总是纠结于如何设计动作方法和存储库类之间的交互。 .例如,假设我有以下 Post Create 操作方法:-
Public ActionResult CreateStudent (Student student)
{
repository.AddStudent(student);
repository.Save();
return RedirectToAction(“Index”);
}
这里是存储库
Public class Repository {
Public Void AddStudent (Student student)
{
// + Initiate a pending Audit Object
//+ Create new Person object and retrieve its ID
SaveChanges();
//+ create new Student and assign it to the created Person
// + Complete Audit object
}
这就是我目前实现交互的方式,从操作方法到存储库的调用更少,而且我有某种大型存储库方法。
但作为另一种方法,我可以对存储库方法进行更多调用,并且与第一种方法相比,存储库方法更小,例如:-
Public ActionResult CreateStudent (Student student)
{
var audit = repository.IntiateAudit(student);
var person = repository.AddPerson(student);
repository.Save();
var student2 = repository.AddStudent(person);
repository.CompleteAudit(audit);
repository.Save();
return RedirectToAction(“Index”);
}
这里是存储库
Public class Repository {
Public Audit IntiateAudit(Student student)
{
//implementation goes here…
Return Audit;
}
Public Person AddPerson (Student student)
{//implementation goes here…
Return Person
}
Public Student AddStudent (Person person)
{//implementation goes here…
Return student;
}
一般来说,哪种方法被认为更好;要么具有较小的存储库方法和多个调用,要么具有较大的存储库方法,对存储库方法的调用较少?
【问题讨论】:
-
如果代码有效并且您所需要的只是编码提示或建议,那么应该在Programmers StackExchange提出这个问题
-
无论哪种方式都有效,哪个“更好”是见仁见智的问题。
-
@BenRobinson 在一定程度上是的,但我可以说出于性能原因考虑更好的存储库方法调用吗?
-
@MatiCicero 是的,我不是指任何错误,但我在询问要遵循的设计方法......
-
@johnG 如果您的方法将数据保存到数据库中,则更多形式更少方法调用之间的相对性能差异将微乎其微。
标签: c# asp.net-mvc entity-framework asp.net-mvc-4 asp.net-mvc-5