【发布时间】:2015-02-14 16:57:44
【问题描述】:
我对一件事感到困惑。我在以前的 mvc 应用程序中使用了存储库模式(不是通用的),并且我曾经在其中包含某种业务逻辑。此刻我读到了应该包含 BL 的服务层模式。但是现在不知道是否有更多的抽象和额外的代码,而不是清晰/可读和高效的代码。
我想实现这样的方法
public void ChangeActiveField(bool isActive, int id)
{
var objectToUpdate = _context.FirstOrDefault(x=>x.id==id);
objectToUpdate.IsActive - isActive;
_context.Entry(objectToUpdate).State = System.Data.Entity.EntityState.Modified;
_context.Save();
}
在这段代码中有一些业务逻辑,我在其中更改一个字段的状态,然后更新它。 我应该在服务层制作它,然后使用简单的存储库更新方法,例如:?
public class MyService
{
private readonly IMyRepository = _myRepo;
MyService(IMyRepository myRepo) //it's injectable
{
_myRepo = myRepo;
}
public void ChangeActiveField(bool isActive, int id)
{
var myObject = _myRepo.GetMyObject(id);
myObject.IsActive = isActive;
_myRepo.Update(myObject);
}
}
这是更好的方法吗?分离效果更好吗?或者它太复杂和覆盖? 感谢您的帮助。 最好的问候。
【问题讨论】:
-
有了这样一个小例子 IMO 它只是让它......可测试。
标签: c# asp.net-mvc architecture repository-pattern service-layer