我正在使用Entity框架6在ASP.NET MVC 5中创建一个新项目(Web应用程序)。我使用ASP.Net Web表单应用程序在3层架构中工作,但我很难处理实体框架,模型等。 那么,我如何使用EF在MVC中构建3层架构,并且可以与实体框架一起使用?
答案 0 :(得分:6)
是的,您可以实施3 / N层架构(或类似的东西)。
ASP.NET MVC与实体框架有很好的合作。 EF甚至已安装并用于默认ASP.NET MVC模板中的用户/角色管理(标识)。
典型的ASP.NET MVC应用程序由模型,视图和控制器组成。简而言之:
通常,控制器将接收一些viewModel,验证它,处理它,并返回一些动作结果(视图,部分视图,JSON,文件等)。在流程部分,控制器可以初始化实体框架上下文,并通过EF db上下文等获取或保存数据到数据库。
保持控制器尽可能薄,这几乎总是一个好主意#34;这么多ASP.NET MVC解决方案使用存储库/工作单元或服务模式。
使用服务创建某个实体的MVC应用程序的一些典型部分的示例:
<强>服务强>
// Connect to database through entity framework db context.
public interface IMyService
{
MyDbContext DbContext { get; set; }
IQueryable<Something> GetSomething( ... query params ... );
void CreateSomething(Something model);
// etc.
}
<强>控制器强>
public MyController
{
private IMyService myService;
public MyController(IMyService myService)
{
this.myService = myService;
}
// Showing create/edit form
[HttpGet]
public ActionResult CreateSomething()
{
// Create Empty view model. new SomeViewModel(); for example.
// Get some nomenclatures for dropdowns etc. through the service (if needed).
// return View(viewModel);
}
// Processing the post request
[HttpPost]
public ActionResult CreateSomething(SomeViewModel viewModel)
{
// Check validity of viewModel (ModelState.IsValid)
// If not valid return View(viewModel) for showing validation errors
// If valid map the viewModel to Model (through AutoMapper or custom mapping)
// Call myService CreateSomething method.
// Redirect to page with details.
}
}
<强>模型强>
public class Something
{
public int Id { get; set; }
public string Name { get; set; }
// .. more properties (can be decorated with validation attributes)
}
演示文稿视图模型
// View model for Something class. Including only properties related to the current UI.
public class SomeViewModel
{
public int Id { get; set; }
// .. more properties (can be decorated with validation attributes)
}
查看强>
@model SomeViewModel
<!-- Form -->
@Html.ValidationForModel()
@Html.EditorForModel()
submit button
<!-- /Form -->
答案 1 :(得分:1)
是的,您可以实施3层架构:
- Tier(Presentation):Views(这是V代表MVC的内容)
- Tier(逻辑):通常是模型和一些Helperclasses(这是M代表的)
- Tier(数据):在实体框架的帮助下,您可以从模型中创建数据库。
醇>
Here's关于如何在ASP.NET MVC中使用实体框架的教程。
答案 2 :(得分:-1)
以下是实施3层的方法:
表示层包括(MVC)
业务逻辑层将包括(C#编程 - 一个DLL)
数据访问层将包括(C#编程与实体框架或dll)
业务对象层将包括(实体框架模型)
参考:http://www.codeproject.com/Articles/841324/ASP-NET-MVC-Web-App-on-Tier-for-Beginners