序列化自跟踪实体
在 ADO.NET 实体框架应用程序中,对象上下文负责跟踪对象中的更改。但是,当需要操作其他层中的对象时,如果对象上下文不可用,则必须确定如何跟踪更改并将这些更改报告回对象上下文。从实体框架版本 4 开始,自跟踪实体可帮助跟踪任意层中的更改。自跟踪实体是从文本模板转换工具包 (T4) 模板中生成的一种实体,该模板生成的实体类型可以将更改记录到标量属性、复杂属性以及导航属性中。Visual Studio 2010 中提供 ADO.NET 自跟踪实体生成器模板。有关更多信息,请参见演练:序列化自跟踪实体。
MSDN 代码库的实体框架文档示例网站上提供了此示例。
方案
此示例演示 WCF 服务如何公开返回实体图表的一系列操作。接下来,一个客户端应用程序操作此关系图,并向一个使用实体框架来验证和保存对数据库所做的更新的服务操作提交修改内容。
必备条件
在运行此示例之前,一定要先安装以下软件:
包含 .NET Framework 4 的 Visual Studio 2010
SQL Server 2005 或 2008 数据库引擎
School 示例数据库(包含在此示例中)
SQL Server Management Studio(可选)
生成示例
**“STESchoolModelExample”**包含以下 5 个项目:
**“STESchoolModel”**类库项目,包含基于 School 的模型和自跟踪实体模板,后者包括自跟踪实体类型模板和类型化的 System.Data.Objects.ObjectContext 模板。
**“STESchoolModelTypes”类库项目,链接到“STESchoolModel”**项目中的自跟踪实体类型模板。
STESchoolModelService,Windows Communication Foundation (WCF) 服务应用程序,公开返回实体图表以及将客户端上所做更改应用到数据库的一组操作。
STESchoolModelConsoleTest,控制台客户端应用程序。
STESchoolModelWPFTest,Windows Presentation Foundation (WPF) 客户端应用程序。
使用下列步骤生成示例。
生成 STESchoolModelExample 应用程序
(可选)如果您的 SQL Server 实例中尚不包含 School 示例数据库,请运行此项目随附的 CreateSchool.sql 脚本。
在 Visual Studio 中打开解决方案文件。
(可选)如果您在本地计算机中默认实例以外的其他 SQL Server 实例中创建了 School 数据库,请指定正确的 SQL Server 实例,方法是:在以下项目的配置文件中,修改连接字符串的数据源:“STESchoolModelService”、“STESchoolModelConsoleTest”、“STESchoolModelWPFTest”。
生成解决方案。
运行示例
使用以下过程运行示例。
运行客户端应用程序
更新**“STESchoolModelWPFTest”和“STESchoolModelConsoleTest”客户端项目中的服务引用。若要更新服务引用,请在“解决方案资源管理器”中右击“服务引用”文件夹下的“ServiceReference1”,并选择“更新服务引用”**。
将**“STESchoolModelWPFTest”或“STESchoolModelConsoleTest”**设置为启动项目。
运行该应用程序。如果客户端无法与引用的服务通信,请按照后续步骤操作。
从客户端项目中删除**“ServiceReference1”**。
再次添加此服务引用。若要添加对服务的引用,请在**“解决方案资源管理器”中右击“服务引用”文件夹并选择“添加服务引用”**。
配置此服务。由于**“STESchoolModelService”返回 System.Collections.Generic.List,因此您需要配置对此服务的引用。右击该服务名称(“ServiceReference1”),然后选择“配置服务引用...”。在“配置服务引用”对话框中,从“集合类型”列表中选择“System.Collections.Generic.List”**类型。
运行该应用程序。
删除示例
使用下列过程删除**“STESchoolModelExample”**示例。
删除 STESchoolModelExample 应用程序
删除项目目录和内容。
(可选)从 SQL Server 实例中删除 School 数据库。