【发布时间】:2015-07-30 22:11:26
【问题描述】:
我正在研究 MVC 框架(ASP.NET MVC5、Entity Framework 6)中的 e-tier 架构。我的应用程序分为三个子项目,它们是业务层、数据访问层、存储库(包括存储库和工作单元)和 ASP.NET MVC Web 应用程序。我正在努力理解业务数据和实体框架模型之间的映射。例如,如果我在实体框架中有模型类 User 作为
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 模型类才能从数据库中获取所有用户,我目前的理解是;每一层都应该相互独立,我有抽象层,即数据访问层和业务层之间的存储库。我对这两个概念一起工作感到有些困惑。我是在正确的轨道上还是错过了什么。还需要用户业务层的实际答案。
【问题讨论】:
-
如果没有要添加的内容,为什么不直接使用原始类?此外,GetAllUser() 应该是静态的或其他位置,因为用户对象没有必要返回所有用户。
-
首先:当然层不是独立的——过去的想法是层-n 只知道层-(n-1)(或下面的所有层)——无论如何架构取决于你的用例的大小——当你只是做一个 TODO 列表时,把所有东西都抽象出来是多余的。话虽如此:DAL 和 BLL 都应该知道您的模型 - 这样您的 Repositories 可以与 BLL 将使用的实际模型一起使用(这就是我将如何实现它)
标签: c# asp.net-mvc asp.net-mvc-5 repository-pattern n-tier-architecture