我有一个带控制器的MVC层,它使用服务层来获取和存储数据。在我的服务层中,我有这样的方法:
public interface ISetServices
{
List<Set> GetBreadcrumbs(int? parentSetId);
List<Set> GetAllSets();
List<Set> GetAllTopLevelArchivedSets();
List<Set> GetTopLevelSets();
Set GetSet(int? setId);
Set CreateSet(string name, string details, int? parentSetId);
void DeleteSet(int? setId);
void ArchiveSet(int? setId);
void UnArchiveSet(int? setId);
/ etc
我的MVC图层使用viewModels来显示数据。在实现编辑服务之前,这已经很好了 - 我现在要做的是创建一个UpdateSet方法,该方法从控制器获取viewModel并相应地更新数据库。
由于MVC层依赖于服务层,因此服务层不了解viewModels。这是依赖注入的来源吗?或者有一种更好的方法可以解决这个问题吗?
答案 0 :(得分:1)
您需要将ViewModel转换为Set
,然后将其传递到服务层。
public class SetController : Controller
{
public Action Edit(SetViewModel viewModel)
{
var set = _setService.GetSet(viewModel.SetId);
set.Prop1 = viewModel.Prop1;
_setService.Edit(set);
}
}