问一个关于三层中包含LINQ的问题

r_y_y_d 2009-01-08 04:27:15
以前没有LINQ时,三层还是比较清晰的

现在有了Linq,好像不太清晰了

在业务层会采用Linq语法操作Linq类,

而有时候表面层也可能用到应用到Linq实体类

在用LINQ的情况下,是否有较清晰的解决方案。

不是为了三层而三层。或者说这样就可以了?
...全文
516 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
wjy217213 2011-07-25
  • 打赏
  • 举报
回复
学习了
校长大人 2010-09-28
  • 打赏
  • 举报
回复
我觉得你这个问题有两种解决方案
1,把LINQ中的实体类COPY 出来,重新放一命名空间当中。这样就可以在页面层和,数据层共享实体类,而不发生冲突。不过这样又点繁琐,消弱了方便的意义。
2 ,使用wcf,这样的话,可以端只需要和 wcf 进行交互,层次就分明了!
jansulucas 2009-10-14
  • 打赏
  • 举报
回复
学习鸟。。多谢各位的无私奉献
  • 打赏
  • 举报
回复
能不能长久、放心地把Linq作为BLL工具,这就要看Linq是不是有能力能让更多的数据库产品开发公司所支持。当你自己写一套东西,我在8楼说过了,要注意那个问题。
r_y_y_d 2009-01-08
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 sp1234 的回复:]
当你站在Linq框架的角度,也就是比Linq to SQL的原型接口的角度 --> 当你站在Linq框架的角度,也就是Linq to SQL的高一层“原型”的角度
[/Quote]

是不是就是说如果我的项目就是基于Linq To SQL,不会出现数据库移植等扩展,那么我就直接在业务层用DataContext进行操作

如果我的项目如果存在扩展,以后还有可能抛弃Linq,或者用其他数据库,那么就需要在外面再包一层,给业务层提供接口
  • 打赏
  • 举报
回复
当你站在Linq框架的角度,也就是比Linq to SQL的原型接口的角度 --> 当你站在Linq框架的角度,也就是Linq to SQL的高一层“原型”的角度
  • 打赏
  • 举报
回复
当你使用Linq to SQL的时候,从Linq框架角度去使用各种Linq实现都支持的东西。例如我就觉得DataContext可有可无的(你可以使用ADO.NET直接修改SqlServer数据库中的数据而不一定一定通过DataContext)。或者,写一个关于将对象更新到数据库的通用接口(也不过4、5个简单方法而已),并实现这个接口(底层虽然还是使用DataContext实现,但是是隐藏了它),这样就为各种Linq实现的切换做好准备。当你站在Linq框架的角度,也就是比Linq to SQL的原型接口的角度,就会更好去使用Linq的通用的那些作用而避免具体Linq实现的“方言”特性。

如果你写代码时几乎不用其考虑Linq to SQL方言,即使将数据库切换为Linq to MYSQL、Linq to Excel、Linq to XML 甚至 Linq to GoogleSearch 也很容易,此时你的Linq代码其实就是BLL同等概念了。
善缘2022 2009-01-08
  • 打赏
  • 举报
回复
是的,功能可以实现就行。不必强求三层。
  • 打赏
  • 举报
回复
Linq的重点其实也很简单,就是面向对象的查询语言,不论是关系数据库、面向对象数据库,甚至内存数据数组,其查询遍历的语法都是基本上一样的SQL类似的语法,这样Linq也可以用来快速地进行算法分析和实现(而不需要你去写伪代码来说明程序的计算算法了)。





不必强求三层


还顶
mengxj85 2009-01-08
  • 打赏
  • 举报
回复
学习,同意楼上,不必强求三层
yangshenghong 2009-01-08
  • 打赏
  • 举报
回复
不必强求3层
gongsun 2009-01-08
  • 打赏
  • 举报
回复
埋头学习中...
r_y_y_d 2009-01-08
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 sp1234 的回复:]
我不太清楚你说的Linq到底是指Linq还是特指Linq to SQL。如果是指Linq框架本身,那么你要看看你的代码是否可以具有兼容各种Linq实现的倾向性。

不管是否兼容性都很高,但是Linq框架本身确实是一种Provider框架,也就是让我们摆脱各种DAL的差异的束缚。从这个意义上,Linq就是一种通用的BLL工具库。你的自定义BLL类再调用Linq来补充其功能,甚至“表面层”直接调用Linq,都是更加强调了与DAL的解耦这个设计特点。
[/Quote]

在这里我指的就是Linq To Sql,我的意思是,现在有了Linq语法后,我是否还需要再去特别构造一个数据层(ORM之上的一层)

因为我觉得我在业务层里直接使用Linq语法操作数据库不就可以了吗
  • 打赏
  • 举报
回复
实际上,如果你开发过ORM就会发现,搞一个面向对象风格的数据存取api很容易,可是你想搞一个让(上述我给出的Google结果中你可以看看Linq Provider的不下20种类实现,并且许多都并不是关系数据库)这些各种各样的DAL都能兼容的类似SQL风格的统一的查询语言,以一般人的能力几乎是10辈子也不可能实现的。由于没有真正面向对象的查询功能,所以许多自己开发的ORM都是似是而非的ORM,它可能让用户输入一个string来代表查询规则,这怎么能将实现机制完全不同的DAL一网打尽呢?所以,Linq的重点其实也很简单,就是面向对象的查询语言,不论是关系数据库、面向对象数据库,甚至内存数据数组,其查询遍历的语法都是基本上一样的SQL类似的语法,这样Linq也可以用来快速地进行算法分析和实现(而不需要你去写伪代码来说明程序的计算算法了)。
  • 打赏
  • 举报
回复
我不太清楚你说的Linq到底是指Linq还是特指Linq to SQL。如果是指Linq框架本身,那么你要看看你的代码是否可以具有兼容各种Linq实现的倾向性。

不管是否兼容性都很高,但是Linq框架本身确实是一种Provider框架,也就是让我们摆脱各种DAL的差异的束缚。从这个意义上,Linq就是一种通用的BLL工具库。你的自定义BLL类再调用Linq来补充其功能,甚至“表面层”直接调用Linq,都是更加强调了与DAL的解耦这个设计特点。
lovehongyun 2009-01-08
  • 打赏
  • 举报
回复
没用过linq
r_y_y_d 2009-01-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 vrhero 的回复:]
Linq和三层架构并无关系...业务层使用Linq语法有什么不对?

Linq不仅仅是Linq to SQL...
[/Quote]

那Linq To Sql类算是什么呢
qimini 2009-01-08
  • 打赏
  • 举报
回复
LinQ是一种语法,是C#语言的范畴;3层是系统架构。

LinQ本身和数据访问关系不大,不过.NET Framework提供了LinQ for SQL 的实现。

LinQ for SQL的设计理念也仅是限于轻量型数据库应用。


vrhero 2009-01-08
  • 打赏
  • 举报
回复
Linq和三层架构并无关系...业务层使用Linq语法有什么不对?

Linq不仅仅是Linq to SQL...
fengxuanll 2009-01-08
  • 打赏
  • 举报
回复
只简单的用了下linq``来学习下``等高手
加载更多回复(1)
英文版:Professional ADO.NET 3.5 with LINQ and the Entity Framework 内容简介 《ADO.NET 3.5高级编程:应用LINQ&Entity; Framework》由知名的微软数据库权威专家Roger Jennings编写,凝聚了Roger多年的数据库编程经验,具有很强的指导性和实用性。《ADO.NET 3.5高级编程:应用LINQ&Entity; Framework》详细介绍了LINQ和Entity Framework技术的方方面面,通过丰富的示例程序演示了如何使用这些新兴技术来提高编程效率。主要包含5部分内容:ADO.NET 3.5概览,LINQ架构和基本实现,LINQ to SQL等各种领域相关的LINQ实现,ADO.NET实体框架介绍,以及如何实现ADO.NET实体框架。通过学习《ADO.NET 3.5高级编程:应用LINQ&Entity; Framework》,您将轻松掌握如何利用LINQ和Entity Framework的前沿查询技术和对象/关系映射技术来推动企业级计算的革新。 作者简介 作者:(美国)詹宁斯(Roger Jennings) 译者:孟兆炜 Roger Jennings是一名专业的作者和顾。他在Microsoft.NET n层结构、客户/服务器数据库应用程序、数据密集的基于Windows通信基础(Windows Communication Foundation,WCF)的Web服务等方面有很深的造诣。从Professional Extensions for Visual Basic 2.0(代号Rawhide)开始,他就是Visual Basic和sual Studio所有版本的beta测试人员。 Roger先生编写的25本计算机方面书籍的印刷量已经超过125万册,并被翻译成20多种语言。他编写的书籍包括:Wiley/WROX出版的Expert One-On-One Visual Basic 2005Database Programming, SAMS出版的3个版本的Database Developer's Guide to l/is ual Basic,SAMS出版的两个版本的Access Developer's Guide,QUE出版的11个版本的Special Edition Using Microsoft Access,QUE出版的两个版本的Special Edition Using Windows NT4.0Server。他还编写了多本面向开发者的书籍,内容涉及Windows 3.1多媒体、Windows 95、Windows 2000服务器、活动目录组策略、Visual Basic Web服务以及微软Office InfoPath 2003SP-1等方面。Roger先生担任Redmond媒体研究组织的Visual Studio Magazine杂志及其前身Visual Basic Programmer’s Journal的特约编辑已经长达15年。他也在Redmond Magazine上发表文章,并且负责Tech Briefs专栏以及Redmond Developer News的封首语的写作。 Roger先生有长达30年的计算机相关领域经验,他最初从事开发由Wang 700型计算器和后继的Wang BASIC微计算机所驱动的实时间数据获取和化学过程控制系统。他是Oak Leaf Systems公司(一家位于北加利福尼亚的软件顾公司)的主要开创者,也是Oak Leaf Systems博客的作者。他的演示作品Oak Leaf Code of Federal Regulations(CFR)ASENET Web Service荣获微软最佳.NET横向解决方案奖。 目录 第Ⅰ部分 ADO.NET3.5概览 第1章 使用ADO.NET3.5提供的新方法访数据 第Ⅱ部分 LINQ简介 第2章 理解LINQ的体系结构和实现 第3章 使用LINQ to Objects执行LINQ查询表达式 第4章 使用高级查询操作符和表达式 第Ⅲ部分 使用领域相关的LINQ实现 第5章 使用LINQ to SQL和Linq Data Source 第6章 使用LINQ to Data Set查询Data Table 第7章 使用LINOtoXML处理文档 第8章 探索第三方和新兴的LINO实现 第Ⅳ部分 ADO.NET实体框架介绍 第9章 使用实体数据模型提升数据抽象级别 第10章 定义存储层、概念层和映射层 第11章 Entity SQL简介 第Ⅴ部分 实现ADO.NET实体框架 第12章 利用对象服务和LINQ to Entities 第13章 更新实体和复杂类型 第14章 将实体绑定到数据感知控件 第15章 使用实体框架作为数据源

62,054

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧