我应该把我的ViewModel的ASP层.. NET Core 6



大家好。

对不起,如果这可能不是一个有效的/令人困惑的问题,因为我不是那么精通MVC。

关于干净的架构原则,我应该把我的视图模型放在哪一层?在实体层?用例层?或者在表示层?

我找到的一些文章,他们提到把ViewModel放在表示层但我不确定如何将数据从DB转换为ViewModel,如果我把它放在上述层。

目前,这是我的实现。在处理程序中使用AutoMapper将DB数据转换为ViewModel。只是提一下,我使用Mediatr使用Mediator设计模式。

FeatureController.cs

public class FeatureController : BaseController
{
private readonly IMediator _mediator;
FeatureController(IMediator mediator) {
_mediator = mediator;
}
public IActionResult Method1() {
var vm = _mediator.Send(new FeatureCommand())
return View(vm);
}
}

FeatureCommand.cs

public class FeatureCommand : IRequest<SomeViewModel>
{
}

FeatureCommandHandler.cs

public class FeatureCommandHandler : IRequestHandler<FeatureCommand, SomeViewModel>
{
private readonly IMapper _mapper;
private readonly ISomeRepo _someRepo;
public void ViewModel(IMapper mapper, ISomeRepo repo) {
_mapper = mapper;
_someRepo = repo;
}
public async Task<DeviceWrapperDataView> Handle(FeatureCommand request, CancellationToken cancellationToken)
{
//Insert code to fetch data from DB
var resultFromDB = repo.GetFromDB();
return _mapper.Map<SomeViewModel>(resultFromDB);
}
}

我计划在不同的类库中创建ViewModels。与域层(洋葱架构的内部部分)相同的级别,因为我的UseCase层需要使用在我的Handler类的返回部分中显示的那些ViewModel。

如果我对clean architecture的理解有误,请纠正我。提前感谢🙂

根据Clean Architecture "true"ViewModels,所以那些被发送到前端的对象,总是属于接口适配器层通常也被称为"呈现层"。

但是当你在谈论"将DB数据转换为viewmodel"时;你可能指的是"响应对象"它们属于用例层,甚至属于"实体"。它们属于域模型。

最新更新