AJAX, WCF, LINQ to Entities 演示应用程序






3.17/5 (6投票s)
在一个应用程序中使用大多数最新技术
目录
- 引言
- 架构与技术
- 先决条件
- 安装指南
- 数据库表
- 应用程序目的
- 如何使用(说明)
- 代码
引言
我开始这个项目是为了好玩,并获得使用一个应用程序中大部分最新技术的经验。我喜欢开发它,希望您喜欢阅读它并使用它……
架构与技术
Directory 项目是一个简单的应用程序,它使用 n 层应用程序架构设计(见下图)。该应用程序使用 .NET 平台开发,利用 C#、Framework 3.5、带 lambda 表达式的 LINQ to Entity、WCF、asp.net update panel 和 AJAX 控件。

先决条件
VS 2008、Framework 3.5、SQL Server。
安装指南
- 解压附件文件
- 在 SQL Server 中创建一个名为“Directory”的数据库
- 针对此数据库运行 DirecotryDatabaseTables.sql 以创建所有必需的表。您可以在附件 zip 的 DatabaseTables 文件夹中找到此文件
- 打开 IIS 管理器(打开运行并输入“inetmgr”或通过其他方式!转到控制面板 -> 管理工具 -> IIS 管理器,如果您正在运行 Vista!否则祝您好运找到它)
- 创建一个名为“Directory”的新应用程序池或虚拟目录,并将其指向应用程序的 Web 文件夹
- 在 VS 2008 中打开应用程序并在 web.config 中更新连接字符串
- 更新数据源(如果数据库不在您的本地 PC 上)
- 用户名和密码
web.config 文件中的连接字符串
<connectionStrings> <add name="DirectoryEntities" connectionString="metadata=res://*/DirectoryModel.csdl| res://*/DirectoryModel.ssdl|res://*/DirectoryModel.msl; provider=System.Data.SqlClient; provider connection string=" Data Source=localhost;Initial Catalog=Directory; Persist Security Info=True; User ID=USEREID;Password=YOURPASSWORD;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" /> </connectionStrings>
应用程序目的
它允许用户创建不同类别的“事物”,例如:联系人、书籍、代码等,并将它们存储在数据库中。它还提供了两个不同的搜索引擎,可用于检索存储的信息并在屏幕上显示它们。
数据库结构
此应用程序只涉及四个表。

如何使用
为了理解这个应用程序是如何工作的,我建议您按照下面的示例进行操作。这些说明将帮助您在数据库中创建一些记录,并让您使用搜索屏幕来检索这些记录并在屏幕上显示它们。
主屏幕
完成配置并开始运行应用程序后,您将看到以下屏幕

维护屏幕
通过点击主页上的 OPEN FOLDER 图标打开此窗口。

类别
在第一个选项卡中输入新类别的名称,然后点击 Create。描述是可选的。
输入以下信息:著名人物
子类别
选择第二个选项卡(子类别)- 输入子类别的名称,然后点击 Create。描述是可选的。
输入以下信息:新西兰
主题
选择最后一个选项卡(主题)并输入以下信息
记录 1)
姓名:彼得·杰克逊
内容:《指环王》的导演
peter, Jackson, Peter Jackson, New Zealander
点击 Create…
记录 2)
姓名:海伦·克拉克
内容:新西兰的领导人九年
Helen, Leader NZ, New Zealander
点击 Create…
关闭维护窗口。现在您可以使用主屏幕上的搜索引擎来搜索以上信息。
代码
您可以在附件 zip 文件中浏览源代码,但我想指出这个应用程序的一些有趣且重要的部分。
AJAX 控件
在主页面上,我使用 AJAX CascadingDropDown 控件与 WCF 结合来加载类别。
<dropdownlist id="DropDownLisCategory" autopostback="true" onselectedindexchanged=" OnSelectDropDownCategoryChanged" cssclass="dropdownSmall" runat="server" /> <cascadingdropdown id="CascadingDropDown1" runat="server" targetcontrolid="DropDownLisCategory" servicemethod="GetAllCategoriesIdAndName" servicepath="~/Services/DirectoryService.svc" loadingtext="[Loading categories...]" prompttext=" Please select a category" category="Category" />
WCF
以下代码显示了如何将 WCF 添加到脚本管理器标记中。
<asp:ScriptManager ID="scriptMgr" runat="server"> <Services> <asp:ServiceReference Path="~/Services/DirectoryService.svc" /> </Services> </asp:ScriptManager>
此项目中的 WCF 文件

LINQ to Entity
当然,LINQ 是目前最有趣的技术之一,但如果它能与 Oracle 或……一起使用,它可能会更受欢迎。
代码示例1:此方法检查是否已使用传递为参数的类别名称。
private DirectoryEntities _directoryEntities = newDirectoryEntities(); ... public bool DoesCategoryNameExist(string name) { int result = 0; try { ObjectQuery q = _directoryEntities.Category; result = q.Count(sub => sub.Name == name); } catch (Exception ex) { //TODO: } return (result == 0) ? false : true; }
代码示例2:下面的方法在数据库中创建一个新类别。
public void AddCategory(Category category) { try { //some extra validation, logging here .... _directoryEntities.AddToCategory(category); _directoryEntities.SaveChanges(true); } catch (Exception ex) { //ToDO: } }