我正在开发实体框架以开始使用它。以下是我安排项目与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();
}
}
答案 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