这是与Entity Framework交互的正确方法吗?

时间:2011-06-17 18:32:11

标签: c# entity-framework orm architecture entity-framework-4

我正在开发实体框架以开始使用它。以下是我安排项目与EF互动的方式。我只是想知道我是否正朝着正确的方向前进。请建议更好的方法。请忽略UI之类的架构,不应该引用DAL。这只是“了解”项目。 :)

这就是我在做的事情:

DAL的一个项目。这里所有数据库操作都将使用EF。

模型 - 业务实体类。我将返回模型的实体类,而不是返回EF的Order对象。 (有没有办法将我的业务实体映射到EF实体?)

UI - 这将调用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 个答案:

答案 0 :(得分:3)

考虑使用DAL外部所需的API添加interfaces项目,以便在没有DAL的情况下启用单元测试,并使用DAL项目实现这些接口的实现项目。

答案 1 :(得分:1)

我认为这很好,你走的是正确的道路。

我还建议在VS解决方案中使用Architecture Project来限制其他开发人员交叉调用不正确的项目并保持正确的SoC。

答案 2 :(得分:1)

在我看来,你走的是正确的道路。 创建投影有时很麻烦,迟早会忘记属性。

这是一个将属性从源对象复制到目标对象的框架: http://automapper.codeplex.com/

答案 3 :(得分:1)

  一个小问题。这是他们用POCO对象称为Entity Framework吗?

根据您所显示的内容,这将被称为CodeFirst