数据点:分层式体系结构中的实体框架2010-08-28 MSDN John Papa本专栏基于 ADO.NET EntityFramework 的预发布版本撰写而成。文中包含的所有信息均有可能发生变更。目录定义层构建模型工作原理保持更改删除和添加总结当 n 层体系结构的架构师评估任何新技术、模式或策略时,他们必须考虑新的谜团将如何与体系结构相融合。有了实体框架,集成将不再是问题。它可以集成到 n 层体系结构以及单层体系结构中。在本月专栏中,我将介绍如何使实体框架能够适合于使用 Windows® Communication Foundation (WCF)、Windows Presentation Foundation (WPF) 技术以及 Model View Presenter (MVP) 模式的 n 层体系结构。我将演示一个示例体系结构,其中包含逻辑存储数据库层、数据访问层、域模型层、业务经理层、服务层、表示层以及被动 UI 层,同时我还将介绍如何使用实体框架来集成这些层。我使用的所有代码示例都可以从《MSDN® 杂志》网站下载。定义层我将要展示的应用程序允许用户在 NorthwindEF 示例数据库中搜索客户并对其执行查看、添加、编辑或删除操作。在深入探究代码和示例之前,让我们先讨论一下此示例的整体体系结构。由于我的重点并不在体系结构本身,而是如何将实体框架与体系结构设计相集成,因此我选择了一个比较常见的体系结构,它可以在经过修改后非常方便地与其他策略相集成。图 1 显示了典型的分层式体系结构的高级视图。顶部的两层使用 UI 层和表示层来处理用户界面表示和导航。UI 层可通过各种技术来实现;但是,在本专栏的相关示例中,我将使用 WPF。UI 层遵从带有被动视图的 MVP 模式,这意味着视图(顶部 UI 层)由表示层进行管理和控制。表示器负责为这些视图提供数据、从视图中抽取数据以保存在较低层,一般情况下还负责响应由视图引发的事件。

图 1 体系结构概述在此处的示例中,表示器通过 WCF 与较低的层进行通信。表示器使用服务的约定作为指导通过 WCF 来调用该服务。服务层通过服务约定接口提供服务。利用这些约定,表示器可以确定如何调用服务。服务层负责接收来自表示器的通信并调用相应的业务层方法,这些方法将执行相应的业务逻辑和数据收集或修改操作。业务层是业务逻辑和此项目的 LINQ to Entities 代码将要驻留的位置。LINQ to Entities 代码将引用从实体框架所生成的实体模型。执行 LINQ 查询时,实体框架会将 LINQ 查询转换为概念实体模型(实体数据模型或 EDM)、将实体内容映射到存储层、生成 SQL 查询并针对数据库加以执行。