LINQ下使用三层架构的探索(二)建立一个LTS层,并在表示层中查询数据.doc_第1页
LINQ下使用三层架构的探索(二)建立一个LTS层,并在表示层中查询数据.doc_第2页
LINQ下使用三层架构的探索(二)建立一个LTS层,并在表示层中查询数据.doc_第3页
LINQ下使用三层架构的探索(二)建立一个LTS层,并在表示层中查询数据.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

LINQ下使用三层架构的探索(二)建立一个LTS层,并在表示层中查询数据 Posted on 2008-04-03 08:00 NafLian 阅读(2658) 评论(12) 编辑 收藏 网摘 为了让第一次接触linq的朋友也能够一起来探讨,我提供了按部就班的方法,并且从最基础的操作开始。关于三层架构的优点我就不多说了,开门见山,我们直接开始我们的工作。 按部就班地做1打开VS2008,新建一个站点,直接将提供的Northwind数据库拷贝到App_Data中。在根目录按右键,Add new item,然后选择LINQ to SQL classes,选择C#语言,重命名为Northwind.dbml。2 点击Server Explorer 选项卡,打开NORTHWIND.MDF节点,将tables中的表Categories和表Products拖入Northwind.dbml中。3 点击窗口中的空白处,切换到Properties 选项卡,注意到这个DataContext的名字为NorthwindDataContext,之后我们要使用到该对象创建实例。点击到Products表,注意到他的名字为Products,Source属性为dbo.Products。4 注意到Solution Explorer中的Northwind.dbml有个cs类文件,我们可以看一下他的内容,仔细看可以理解他的工作原理,但是我们现在不深入讨论这些东西。5 这一张我们先不添加包含LINQ语法的逻辑访问层,而直接通过表示层和一些LINQ语句来使用表中的数据。所以我们新建一个WEB窗体,添加一个GridView,双击空白处,进入PageLoad事件,让我们添加如下代码:NorthwindDataContextdb=newNorthwindDataContext();varproduct=frompindb.Productsselectp;GridView1.DataSource=product;GridView1.DataBind(); 6 简单的解释一下这些代码:1) 我们创建了一个DataContext实例 db2) 我们使用了一个新的var关键字,告诉编译器,让它判断值的类型。(但是既然让编译器推断类型就必须声明的时候赋值,而且不能是null值。注意,这只能用于局部变量,用于字段是不可以的)3) 我们选择了db中的Products,其实这就是表Products对象化后的结果(关于LINQ语法这里先不讲)4) 其实最后product的类型应该就是IQueryable,该类型位于System.Linq中。该类型可以直接作为DataSource使用。5) 使用product作为GridView1的数据源,然后绑定。7 然后运行该页面,将看到Product表中的所有记录。 它是如何工作的?我们做的工作非常少,我们仅仅是建立了一个LINQ TO SQL 类,并且将数据库中的表拖入其中(还可以把视图和存储过程添加进去)。之后,VS2008自动生成了一系列的代码,我们不详细介绍这些代码,但是我们知道,LTS层将数据转换成了对象,我们可以如同操作对象一样操作数据。不过我的做法并没有将操作这些对象的方法写在LTS层中(其实也能这么做),因此在这章立,我们在表示层中使用了这些操作方法,称之为LINQ语法,看上去很像SQL的查询语法。在编译的时候,LINQ会将它们翻译成SQL语法然后根据相对应的对象去操作数据库。小结:做到这里,也许有人觉得,我没有把操作方法传统地放在底层有些不太符合三层架构的思想。但是我个人认为,即便是在表示层去完成这些操作方法,也并没有违反“不在表示层中有操作数据库的语句”。因为实际上,我们并没有去操作数据实体,而是操作对象,接着LINQ会帮我们把这些操作应用在数据上。不过,即便是这样,我觉得在表示层中来实现对象的操作方法也是欠妥当的,不过这一章我们着重讲得是LTS的建立,为了快速得到我们的结果,才采取了这样的方法,在下一章中我们会学习到使用逻辑访问层去编写这些方法。而在表示层中我们直接调用这些方法就可以了。关于LINQ语句的使用大家可以参考李永京的博客中的一些文章,有比较详细的介绍,我这里主要讲层的设计,就不详细说了。感觉其实和SQL很像,只不过更加面向对象化了。这里有几句不同的查询,大家可以替换刚才例子中的LINQ语句。查看已经停用的记录varproduct=frompindb.Productswherep.Discontinued=trueselectp;查看供应商名字为Produce的记录varproduct=frompindb.Productswherep.Category.CategoryName=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论