我正在使用MVC框架(ASP.NET MVC5,Entity Framework 6)中的e-tier架构进行开发。我的应用程序分为三个子项目,它们是业务层、数据访问层、存储库(包括存储库和工作单元)和ASP.NET MVC Web应用程序。我很难理解业务数据和实体框架模型之间的映射。例如,如果我在实体框架中有一个模型类“用户”
DAL - 用户模型
[Table("User")]
public class User
{
public User() { }
[Key]
public int UserID { get; set; }
[StringLength(250)]
[Required]
public string FirstName { get; set; }
[StringLength(250)]
[Required]
public string LastName { get; set; }
[Required]
public int Age { get; set; }
[StringLength(250)]
[Required]
public string EmailAddress { get; set; }
public ICollection<UserInGroup> UserInGroup { get; set; }
}
在业务层面,我有一个用户类。
BLL - 用户类
public class User
{
private string userID;
private string firstName;
private string lastName;
private int age;
private string emailAddress;
public string UserID
{
get { return userID; }
set { userID = value; }
}
public string FirstName
{
get { return firstName; }
set { firstName = value; }
}
public string LastName
{
get { return lastName; }
set { lastName = value; }
}
public int Age
{
get { return age; }
set { age = value; }
}
public string EmailAddress
{
get { return emailAddress; }
set { emailAddress = value; }
}
public void GetAllUser()
{
List<App.DAL.Model.User> _user = new List<DAL.Model.User>();
using (var _uow = new UserManagement_UnitOfWork())
{
_user = (from u in _uow.User_Repository.GetAll()
select u).ToList();
}
}
}
我如何将它们映射在一起?其次,对于GetAllUser()方法,我仍然需要使用DAL中的User模型类才能从数据库中获取所有用户,我的当前理解是:每个层应该相互独立,并且我有一个抽象层即存储库,位于数据访问层和业务层之间。我对这两个概念如何协同工作略感困惑。我是否正确理解或者遗漏了某些内容?也需要关于User业务层的实际答案。