如何解决.Net Core 三层架构中的工作单元和存储库模式
我正在开发一个在 asp.net 核心中包含三层的项目。 第一个是企业逻辑,它作为一个单独的类库项目工作。 这里是实体和 Http 数据访问。作为这一层的要求,应该实现工作单元和存储库模式。我是通过以下方式做到的:
public class UnitOfWork : IUnitOfWork
{
private readonly DataContext _context;
public UnitOfWork(DataContext context)
{
_context = context;
Users = new UserRepository(_context);
}
public IUserRepository Users { get; private set; }
public int Complete()
{
return _context.SaveChanges();
}
public void dispose()
{
_context.dispose();
}
}
为了提供业务逻辑并执行必要的验证,创建了另一个层 它引用了第一个类库。其实现如下:
public class UserProvider : IUserProvider
{
private readonly UnitOfWork _unitOfWork;
private readonly IMapper _mapper;
public UserProvider(IUnitOfWork unitOfWork,IMapper mapper)
{
_unitOfWork = unitOfWork as UnitOfWork;
_mapper = mapper;
}
public void DeleteUser(int assetId)
{
_unitOfWork.Users.RemoveById(assetId);
_unitOfWork.Complete();
}
public User GetUserById(int assetId)
{
var asset = _unitOfWork.Users.Get(assetId);
_unitOfWork.Complete();
return asset;
}
public User SaveUser(SaveUserDto saveUserDto)
{
User asset = _mapper.Map<User>(saveUserDto);
var added = _unitOfWork.Users.Add(asset);
_unitOfWork.Complete();
return added;
}
public void UpdateUser(SaveUserDto asset)
{
User editableuser = _mapper.Map<User>(asset);
_unitOfWork.Users.Edit(editableuser);
_unitOfWork.Complete();
}
到这里为止,一切看起来都很好很清晰,而且似乎工作正常。现在在 Web API 项目的第三层中,我需要在 API 控制器中使用 UserProvider
来通过 API 执行 CRUD 操作。但是 UserProvider
在 UnitOfWork 中有一个依赖,作为干净架构的原则,层应该相互分离,我认为在第三层中引用第一层根本不是一个好主意。有什么办法可以解决,还是我理解错了?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。