Я создаю новый проект (веб-приложение) в ASP.NET MVC 5 с фреймворком Entity 6. Я работал в трехуровневой архитектуре с помощью приложения веб-формы ASP.Net, но я запутываюсь в отношении структуры сущностей, моделей и т. Д. Итак, как я могу создать трехуровневую архитектуру в MVC с EF, и можно ли использовать ее с картой сущностей?Как мы можем создать трехуровневую архитектуру в ASP.Net MVC-приложении с EF?
ответ
Да, вы можете реализовать 3 яруса architectur:
- Tier (Presentation): Просмотров (это то, что V обозначает в MVC
- уровня (Logic): Обычно модели и некоторые Helperclasses (это то, что стоять M для)
- уровня (Data):. Уит помощью Entity Framework можно создать базу данных из ваших моделей
Here's учебник о том, как использовать Entity Framework с ASP.NET MVC.
Да, вы можете реализовать архитектуру уровня 3/N (или что-то подобное).
ASP.NET MVC имеет отличное сотрудничество с инфраструктурой сущностей. EF даже установлен и используется для управления пользователями/ролями (идентификация) в шаблоне ASP.NET MVC по умолчанию.
Типичное приложение ASP.NET MVC состоит из моделей, представлений и контроллеров. Кратко:
- Модели POCOs. Модель инкапсулирует данные и отвечает за достоверность данных. Для аналогии - это часть уровня приложения и часть уровня данных. Уровень данных также включает в себя класс контекста EF db.
- Представления .cshtml файлы, которые производят html и могут быть строго типизированы (иметь модель). Для аналогии - это уровень представления.
- Контроллеры отвечают за обработку HTTP-запросов, извлечение модели данных и передачу модели в представление. Для аналогии - это часть уровня приложения (бизнес-логика).
Обычно контроллер получает некоторый viewModel, проверяет его, обрабатывает и возвращает результат действия (вид, частичный вид, JSON, файл и т. Д.). В части процесса контроллер может инициализировать контекст каркаса сущности и получать или сохранять данные в базу данных через контекст df df и т. Д.
Это почти всегда хорошая идея «держать контроллер как можно более тонким», поэтому многие 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 -->
Как ваша статья, мне не нужно создавать трехуровневую архитектуру. Комбинация MVC и EF сама по себе становится трехмерной архитектурой уровня. Правильно ? –
Комбинация MVC и EF сама по себе становится чем-то очень похожей на 3-уровневую архитектуру, но не совсем одинаковой (в классическом смысле 3-уровневая архитектура). Я бы рекомендовал использовать описанную архитектуру, но я не могу знать, нужна ли вам эта или трехуровневая архитектура в классическом смысле этого термина. –
Вот как можно реализовать 3-уровневой:
Pre sentation слой включает (MVC)
Business Logic Layer будет включать в себя (C# Программирование - DLL)
слоя доступа к данных будет включать в себя (программирование C# с лицом frameworkor- библиотека DLL)
Business Object Layer будет включать в себя (Entity Framework модель)
Ref: http://www.codeproject.com/Articles/841324/ASP-NET-MVC-Web-App-on-Tier-for-Beginners
MVC естественно состоит из 3-х слоев, которые Model, View и Controller, EF является ORM, который сидит между БД и C# кодом и обеспечивает манипулирование данных или доступ к данным, переводы и это не имеет ничего общего с архитектурой. Модели представляют собой один слой в дуге MVC, но EF не имеет к этому никакого отношения. – Transcendent