2015-02-10 6 views
3

Я создаю новый проект (веб-приложение) в ASP.NET MVC 5 с фреймворком Entity 6. Я работал в трехуровневой архитектуре с помощью приложения веб-формы ASP.Net, но я запутываюсь в отношении структуры сущностей, моделей и т. Д. Итак, как я могу создать трехуровневую архитектуру в MVC с EF, и можно ли использовать ее с картой сущностей?Как мы можем создать трехуровневую архитектуру в ASP.Net MVC-приложении с EF?

+0

MVC естественно состоит из 3-х слоев, которые Model, View и Controller, EF является ORM, который сидит между БД и C# кодом и обеспечивает манипулирование данных или доступ к данным, переводы и это не имеет ничего общего с архитектурой. Модели представляют собой один слой в дуге MVC, но EF не имеет к этому никакого отношения. – Transcendent

ответ

1

Да, вы можете реализовать 3 яруса architectur:

  1. Tier (Presentation): Просмотров (это то, что V обозначает в MVC
  2. уровня (Logic): Обычно модели и некоторые Helperclasses (это то, что стоять M для)
  3. уровня (Data):. Уит помощью Entity Framework можно создать базу данных из ваших моделей

Here's учебник о том, как использовать Entity Framework с ASP.NET MVC.

5

Да, вы можете реализовать архитектуру уровня 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 --> 
+0

Как ваша статья, мне не нужно создавать трехуровневую архитектуру. Комбинация MVC и EF сама по себе становится трехмерной архитектурой уровня. Правильно ? –

+0

Комбинация MVC и EF сама по себе становится чем-то очень похожей на 3-уровневую архитектуру, но не совсем одинаковой (в классическом смысле 3-уровневая архитектура). Я бы рекомендовал использовать описанную архитектуру, но я не могу знать, нужна ли вам эта или трехуровневая архитектура в классическом смысле этого термина. –

-1

Вот как можно реализовать 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