- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
LINQ下使用三层架构的探索(二)建立一个LTS层,并在表示层中查询数据
LINQ下使用三层架构的探索(二)建立一个LTS层,并在表示层中查询数据
Posted on 2008-04-03 08:00 NafLian 阅读(2658) 评论(12) ?编辑 收藏 网摘
按部就班地做
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事件,让我们添加如下代码:
NorthwindDataContext燿b?爊ew燦orthwindDataContext();008-牋牋牋牋var爌roduct?爁rom爌爄n燿b.ProductsdDataConte牋牋牋牋牋牋牋牋牋牋爏elect爌;爌爄n燿b.Produc牋牋牋牋GridView1.DataSource=product;dDat牋牋牋牋GridView1.DataBind();rodu
?
6 简单的解释一下这些代码:
1)???????? 我们创建了一个DataContext实例 db
2)??????? 我们使用了一个新的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语句。
查看已经停用的记录
var?product?=?from?p?in?db.Products??????????????where?p.Discontinued==true??????????????????????select?p;
文档评论(0)