это правильный способ взаимодействия с Entity Framework? - PullRequest
1 голос
/ 17 июня 2011

Я работаю над Entity Framework, чтобы начать работу с ним. Ниже описано, как я организовал свои проекты для взаимодействия с EF. Я просто хочу знать, иду ли я в правильном направлении или нет. Пожалуйста, предложите лучший подход. Пожалуйста, не обращайте внимания на такие вещи архитектуры, как UI, которые не должны иметь ссылки на DAL. Это просто проект "узнай". :)

Вот что я делаю:

Один проект для DAL. Здесь все операции с БД будут выполняться с использованием EF.

Модель - Business Entity классы. Вместо того, чтобы возвращать объект Order EF, я буду возвращать Entity Class of Model. (Есть ли способ сопоставить мои бизнес-сущности с EF-сущностью?)

Пользовательский интерфейс - это вызовет DAL и сделает все.

Проект 1 - DAL

Этот проект также содержит мой файл edmx.

public class DALRepository
{

    OrderEntities orderEntitiesContext = new OrderEntities();

    public IQueryable<Model.OrderModel> GetOrders ()
    {
        return orderEntitiesContext.Orders.Select(o => new Model.OrderModel { OrderName = o.OrderName, Id = o.OrderID });
    }
}

Проект 2 - Модель

public class OrderModel
{
    public long Id { get; set; }
    public string OrderName { get; set; }
}

Проект 3 - Пользовательский интерфейс

public partial class OrderList : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        DAL.DALRepository dal = new DAL.DALRepository();
        GridView1.DataSource = dal.GetOrders();
        GridView1.DataBind();
    }
}

Ответы [ 4 ]

3 голосов
/ 17 июня 2011

Рассмотрите возможность добавления проекта интерфейсов с API, который необходим за пределами DAL, чтобы включить модульное тестирование без DAL, и проект реализации, который реализует эти интерфейсы с использованием проекта DAL.

1 голос
/ 19 июня 2011

один маленький вопрос. Это то, что они называют Entity Framework с объектами POCO?

Из того, что вы показали, это будет называться CodeFirst

1 голос
/ 18 июня 2011

По-моему, вы на правильном пути.Иногда бывает сложно создавать проекции, вы рано или поздно забудете свойство.

Это среда для копирования свойств из исходного объекта в целевой объект: http://automapper.codeplex.com/

1 голос
/ 17 июня 2011

Я думаю, это отлично, и вы на правильном пути.

Я бы также предложил использовать Архитектурный проект в решении VS, чтобы запретить другим разработчикам осуществлять перекрестные вызовы против неправильных проектов и сохранять надлежащий SoC.

...