65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.17/5 (6投票s)

2009年2月1日

CPOL

3分钟阅读

viewsIcon

39991

downloadIcon

722

在一个应用程序中使用大多数最新技术

目录

  • 引言
  • 架构与技术
  • 先决条件
  • 安装指南
  • 数据库表
  • 应用程序目的
  • 如何使用(说明)
  • 代码

引言

我开始这个项目是为了好玩,并获得使用一个应用程序中大部分最新技术的经验。我喜欢开发它,希望您喜欢阅读它并使用它……

架构与技术

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=&quot;
Data Source=localhost;Initial Catalog=Directory;
Persist Security Info=True;
User ID=USEREID;Password=YOURPASSWORD;MultipleActiveResultSets=True&quot;" 
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 = new DirectoryEntities();

...
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:
                
    }
}
© . All rights reserved.