学Linq to sql(十):分层构架的例子

项目介绍

这节将要把《学Linq to sql (三):增删改》中留言簿的例子修改为使用WCF的多层构架。我们将会建立以下项目:

l A,网站项目 WebSite:留言簿表现层

l B,类库项目 Contract:定义数据访问服务的契约

l C,类库项目 Service:定义数据访问服务

l D,类库项目Entity:留言簿实体

l E,控制台项目Host:承载数据访问服务

项目之间的引用如下:

l A引用B和D;

l B引用D和System.ServiceModel程序集

l C引用B、D、System.ServiceModel以及System.Data.Linq程序集

l D引用System.Data.Linq程序集

l E引用C和System.ServiceModel程序集

生成映射文件和实体

打开VS2008命令行提示,执行以下命令:

sqlmetal /conn:server=xxx;database=GuestBook;uid=xxx;pwd=xxx /map:c:\guestbook.map /code:c:\guestbook.cs /serialization:Unidirectional

注意到,这里我们使用了serialization开关,告知sqlmetal在生成实体的时候自动把它们标记为WCF数据对象。生成结束后把C:\GUESTBOOK.CS添加到Entity项目中。

时间: 2024-10-07 20:23:50

学Linq to sql(十):分层构架的例子的相关文章

学Linq to sql(三):增、删、改

示例数据库 字段名 字段类型 允许空 字段说明 ID uniqueidentifier   表主键字段 UserName varchar(50)   留言用户名 PostTime datetime   留言时间 Message varchar(400) √ 留言内容 IsReplied bit   留言是否回复 Reply varchar(400) √ 留言管理员回复 在数据库中创建一个名为GuestBook的数据库,在里面创建一个tbGuestBook的表,结构如上表. 生成实体类 右键点击网

学Linq to sql(一):预备知识

什么是Linq to sql Linq to sql(或者叫DLINQ)是LINQ(.NET语言集成查询)的一部分,全称基于关系数据的 .NET 语言集成查询,用于以对象形式管理关系数据,并提供了丰富的查询功能,它和Linq to xml .Linq to objects.Linq to dataset.Linq to entities等组成了强大的LINQ. 要学好LINQ查询语法,就不得不先理解C# 3.0的一些新特性,下面一一简单介绍. 隐含类型局部变量 var age = 26; var

步步学LINQ to SQL:将类映射到数据库表

该系列教程描述了如何采用手动的方式映射你的对象类到数据表(而不是使用象SqlMetal这样的自动化工具)以便能够支持数据表之间的M:M关系和使用实体类的数据绑定.即使你选择使用了自动生成类的工具,理解这一实现过程可以让你更加方便地对你的应用程序加以扩展. 下面阐述本文的目标以及该示例程序为初级开发人员介绍如何学习LINQ的基本要点: ·使用LINQ to SQL将SQL Server数据库表映射到与之关联的对象上. ·执行一些简单的LINQ查询来检索数据. 本文详细为你阐述了如何在你的应用程序中

步步学LINQ to SQL:为实体类添加关系

本文详细为你阐述了如何在你的应用程序中实现LINQ to SQL.附件的示例程序包括了这里探讨的所有代码,还提供了一个简单的WPF图形界面程序来显示通过数据绑定返回的结果集. 本部分描述如何实现表间的映射关系:M:1,1:M和M:M.但是这里不会讨论1:1的映射关系,你可以在M:1的关系中发现这种1:1的映射关系.因此,从这里开始,我们将使用Book作为示例为你一步一步讲述这一实现过程. 映射M:1的关系 Book 对象与Category 对象是多对一的关系(M:1),因为一本书仅能属于某一个类

学Linq to sql(二):DataContext与实体

DataContext DataContext类型(数据上下文)是System.Data.Linq命名空间下的重要类型,用于把查询句法翻译成SQL语句,以及把数据从数据库返回给调用方和把实体的修改写入数据库. DataContext提供了以下一些使用的功能: l 以日志形式记录DataContext生成的SQl l 执行SQl (包括查询和更新语句) l 创建和删除数据库 DataContext是实体和数据库之间的桥梁,那么首先我们需要定义映射到数据表的实体. 定义实体类 using Syste

学Linq to sql(九):其它补充

外部映射文件 我们可以使用sqlmetal命令行工具来生成外部映射文件,使用方法如下: 1.开始菜单 -> VS2008 ->VS工具 ->VS2008命令行提示 2.输入命令: D:\Program Files\Microsoft Visual Studio 9.0\VC>sqlmetal /conn:server=xxx; database=Northwind;uid=xxx;pwd=xxx /map:c:\northwind.map /code:c:\northwind.cs

学Linq to sql(七):并发与事务

检测并发 首先使用下面的SQL语句查询数据库的产品表: select * from products where categoryid=1 查询结果如下图: 为了看起来清晰,我已经事先把所有分类为1产品的价格和库存修改为相同值了.然后执行下面的程序: var query = from p in ctx.Products where p.CategoryID == 1 select p; foreach (var p in query) p.UnitsInStock = Convert.ToInt

学Linq to sql(六):探究特性

延迟执行 IQueryable query = from c in ctx.Customers select c; 这样的查询句法不会导致语句立即执行,它仅仅是一个描述,对应一个SQL.仅仅在需要使用的时候才会执行语句,比如: IQueryable query = from c in ctx.Customers select c; foreach (Customer c in query) Response.Write(c.CustomerID); 如果你执行两次foreach操作,将会捕获到两

学Linq to sql(五):存储过程

普通存储过程 首先在查询分析器运行下面的代码来创建一个存储过程: create proc sp_singleresultset as set nocount on select * from customers 然后打开IDE的服务器资源管理器,之前我们从表中拖动表到dbml设计视图,这次我们从存储过程中找到刚才创建的存储过程,然后拖动到设计视图.在方法面板中可以看到已经创建了一个sp_singleresultset的方法,如下图: 然后打开Northwind.designer.cs,可以找到下