我是 Asp.Net MVC 的新手,想将我的项目拆分为具有 1- MVC 项目(表示层 UI 层)2- 业务逻辑层 BLL 的分层架构(在这里我想验证数据视图模型并将视图模型转换为数据库模型使用自动映射器,然后想通过使用自动映射器转换回 UI(MVC 项目)层 3 数据访问层来发送回视图模型,数据访问层具有存储库 DB 上下文等,我只想在业务层中引用它们。
我的困惑是在业务逻辑层和 MVC 项目 (UI) 层之间。我的视图模型类位于 MVC 项目内的模型文件夹中,业务逻辑层引用了具有数据库表类的数据访问层。所以我的视图模型在业务逻辑层中无法识别。如果我想添加 MVC 项目(我的视图模型存在的地方)对业务逻辑层的引用,它会给出循环依赖错误。我在论坛和教程上进行了大量搜索,但未能找到解决方案或无法理解这个概念。
我的业务逻辑层和数据访问层是库项目,而 UI 层是 MVC 项目
是否有人可以通过将数据视图模型发送到业务逻辑层并从业务逻辑层接收后视图模型来举例说明
数据访问层
namespace DAL.Infrastructure.Contract
{
public interface IBaseRepository<T> : IDisposable where T : class
{
IEnumerable<T> GetAll();
IEnumerable<T> FindIEnumerableByExpression(Expression<Func<T, bool>> predicate);
T FindFirstOrDefaultByExpression(Expression<Func<T, bool>> predicate);
T GetById(object Id);
T Insert(T entity);
T Delete(T entity);
void Update(T entity);
void Save();
}
}
namespace DAL.Infrastructure
{
public class BaseRepository<T> : IBaseRepository<T> where T : class
{
public PMSEntities dbContext = null;
public DbSet<T> dbSet = null;
public BaseRepository()
{
this.dbContext = new PMSEntities();
dbSet = dbContext.Set<T>();
}
public virtual IEnumerable<T> GetAll()
{
return dbSet.AsEnumerable<T>();
}
public T GetById(object id)
{
return this.dbSet.Find(id);
}
public IEnumerable<T> FindIEnumerableByExpression(System.Linq.Expressions.Expression<Func<T, bool>> predicate)
{
IEnumerable<T> query = dbSet.Where(predicate).AsEnumerable();
return query;
}
public T FindFirstOrDefaultByExpression(System.Linq.Expressions.Expression<Func<T, bool>> predicate)
{
return this.dbSet.FirstOrDefault(predicate);
}
我想在业务逻辑层中使用上面的类,而不是直接在控制器中使用。这是我的困惑如何编写业务逻辑层并在具有循环依赖错误的业务逻辑层中使用自动映射器
梦里花落0921
相关分类