本文转自:http://www.cnblogs.com/edrp/archive/2008/09/03/1283434.html
开发环境:Windows server 2008 Enterprise,Microsoft Visual Studio 2008 SP1,.NET Framework 3.5 SP1,Microsoft SQL Server 2008
开发架构: ASP.NET AJAX,WCF,ADO.NET Entity Framework
开发步骤:
1、创建一个空白解决方案:JXCSln;
2、添加一个类库项目,名称为:Jxc.DAL,删除生成的Class1.cs,接着引用一下:System.Data.Entity,否则在创建数据库连接时会出现错误,无法连接到数据库。然后添加新项:ADO.NET Entity Date Model。名称为:NorthwindDbModel.edmx;在弹出的实体模型向导的第一个窗口中,选择“从数据库生成”,然后下一步,数据库连接设置如下图:
设置好后,单击下一步,出现如下图所示窗口,这时,我们只选择表:
最后单击无成,生成的实体模型图如下:
三、选择Jxc.DAL类库,生成一下。
四、添加一个新项目(类库项目),名称为:Jxc.BLL,删除生成的Class1.cs文件。添加引用,选择项目,引用Jxc.DAL,引用System.Data.Entity。
五、添加一个新类,名称:EmployeesInfo。
六、打开EmployeesInfo.cs文件,输入如下代码:
(需要 using Jxc.DAL;)
NorthwindEntities EmployeesContent = new NorthwindEntities();
public string GetEmployeeNameByID(int EmployeeID) { var query = EmployeesContent.Employees.First(p => p.EmployeeID == EmployeeID); return query.LastName + query.FirstName; }
public Employees[] GetAllEmployees() { var query = from emp in EmployeesContent.Employees select emp; return query.ToArray(); }
(时间关系,待续...)
接着上面的
七、添加一个新项目:ASP.NET Web 应用程序,并命名为:Jxc.Web。
八、添加引用——>项目:Jxc.BLL,Jxc.DAL,System.Data.Entity。
九、添加新项,WCF服务,名称:EmployeeService.svc; 删除文件IEmployeeService.cs,并将以下代码粘贴到EmployeeService.svc.cs文件中:
using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.Text; using Jxc.DAL; using Jxc.BLL; //记得引用
namespace Jxc.Web { [ServiceContract(Namespace = "WcfService")] public class EmployeeService { EmployeesInfo employeefobl = new EmployeesInfo(); int recordCount = 0;
[OperationContract] public string GetEmployeeNameByID(int empid) { return employeefobl.GetEmployeeNameByID(empid); }
[OperationContract] public Employees[] GetAllEmployees() { return employeefobl.GetAllEmployees(); } } }
十、接着删除Web.Config文件中生气的代码:
<system.serviceModel> <behaviors> <serviceBehaviors> <behavior name="Jxc.Web.EmployeeServiceBehavior"> <serviceMetadata httpGetEnabled="true" /> <serviceDebug includeExceptionDetailInFaults="false" /> </behavior> </serviceBehaviors> </behaviors> <services> <service behaviorConfiguration="Jxc.Web.EmployeeServiceBehavior" name="Jxc.Web.EmployeeService"> <endpoint address="" binding="wsHttpBinding" contract="Jxc.Web.IEmployeeService"> <identity> <dns value="localhost" /> </identity> </endpoint> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> </service> </services> </system.serviceModel>
十一、选择文件EmployeeService.svc,右键——>查看标记:
将代码::<%@ ServiceHost Language="C#" Debug="true" Service="Jxc.Web.EmployeeService" CodeBehind="EmployeeService.svc.cs" %>
改成如下代码:<%@ ServiceHost Language="C#" Debug="true" Service="Jxc.Web.EmployeeService" CodeBehind="EmployeeService.svc.cs" Factory="System.ServiceModel.Activation.WebScriptServiceHostFactory" %>
十二、打开Default.aspx窗口,加入Asp.net Ajax功能:ScriptManager代码如下: <body> <form id="form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server"> <Services> <asp:ServiceReference Path="~/EmployeeService.svc" /> </Services> </asp:ScriptManager> <br /> <h2> ASP.NET AJAX+WCF+ADO.NET Entity 架构实例</h2> <p> 输入一个员工ID调用WCF并返回对应的名字!</p> 请输入部门ID:<input id="txtdeptID" name="txtdeptID" type="text" /> <input id="btnTransfer" οnclick="ClientGetEmployeeID()" type="button" value="调用" /> <span id="Results"></span> </form> </body>
十三、编写javascript代码,如下:
<script type="text/javascript"> function ClientGetEmployeeID() { var txtdeptID = document.getElementById("txtdeptID"); if (isNaN(txtdeptID.value)) { alert('部门ID必须是数字!') txtdeptID.focus(); return; } var proxy = new WcfService.EmployeeService(); proxy.GetEmployeeNameByID(txtdeptID.value, OnSucceeded, OnFailed, ""); } function OnSucceeded(result) { var RsltElem = document.getElementById("Results"); RsltElem.innerHTML = result; } function OnFailed(error) { var RsltElem = document.getElementById("Results"); RsltElem.innerHTML = "调用失败!"; } </script>
十四、在Default.aspx.cs文件using一下引用项目:
using Jxc.BLL; using Jxc.DAL;
十五、程序运行如下:
至此,已经可以正常运行,测试通过。
现有如下问题:
一、如果换成使用jquery如何调用?
二、无论是ASP.NET AJAX或者是jquery调用,如何和Web页面中的GridView绑定?
三、如何将依赖注入、IOC加入项目?
四、使用了ADO.NET Entity后,数据库中的表结构发生变化,如何应对项目中的变化?比如:员工表的地址字段由原来的长度20加为50?
转载于:https://www.cnblogs.com/feima-lxl/archive/2008/09/24/1297577.html
相关资源:数据结构—成绩单生成器