首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

老有关问题:用三层架构时,怎么进行多表联合查询?求一比较优秀的解决办法

2012-06-01 
老问题:用三层架构时,如何进行多表联合查询?求一比较优秀的解决方法。下面是我搜集整理的解决方法,请有经验

老问题:用三层架构时,如何进行多表联合查询?求一比较优秀的解决方法。
下面是我搜集整理的解决方法,请有经验的兄弟谈谈哪个比较好?或者给一些更加适合的。谢谢~
--------------------------------------------
1、自己新建一个可以和结果记录集对应的实体类。
2、用视图。
3、多数据记录集用DataTable传
4、自己构建一个返回DataSet的方法


[解决办法]
进行多表查询?这不是在SQL语句中写的吗?跟三层架构有什么关系?
[解决办法]
选1吧,1的效率最高,避免了装箱和拆箱操作,而且也容易添加事务锁
[解决办法]
视图比较OO,
但有些数据库并不支持。
[解决办法]
创建一个Stored Procedure,把结果放到实现定义好的DataSet里,或者用DataReader把结果读到一个ICollection<YourType>中。
不用View,我觉得会影响速度。

[解决办法]
1 如果你说的多表查询是只得简单的例如
部门,员工 

需要展示 员工的所在单位信息 这类问题的话,我会选择用实体类,将这些SQL的构建交给ORM完成,将实体类做成贫血模型。此时业务实体具备了简单的View功能(以下代码只是简单实例)

C# code
//1   FullTypeName,2   TableName [Entity("Models.Users",   "Users")] EntityID(EntityIDType.Identity,   "Id") public   class   User{     private   string   userName   =   string.Empty;                 //   1   数据库字段名称,2属性类型,3长度,4是否允许参加数据实体的操作                 [Field("UserName",typeof(string),60,true)]                 public   string   UserName                 {                         get   {   return   userName;   }                         set   {   userName   =   value;   }                 }                 private   int   id;                 [Field("id",   typeof(int),true)]                 public   int   Id                 {                         get   {   return   id;   }                         set   {   id   =   value;   }                 }                 private   int   departID;                 [Field("departID",   typeof(int),true)]                 public   int   DepartID                 {                         get   {   return   departID;   }                         set   {   departID=   value;   }                 }                 private   string   departName;                 /*                     DepartName   来源于Departs这个实体模型对象;                       此时   DeaprtName   属性   为不可修改,存在于Departs实体model   多对1的表间关系。                 */                 [Field("DepartName",   typeof(string),false]                [Relation(Relation.ManyToOne,"Departs","DepartID"))]                                 public   int   DeaprtName                 {                         get   {   return   departName;   }                         set   {   departName=   value;   }                 }                 }
[解决办法]
DataTable
好一些吧!
o(∩_∩)o...学习来的
[解决办法]
视图
[解决办法]
做个直接执行sql命令的类就算了。。。
爱查什么返回什么。。。
[解决办法]
1 用视图
2 select ... into newtable.再在newtable里面找.
3 把数据取道前端,自己写连接算法.
[解决办法]
用视图 

[解决办法]
用了一个返回DataSet的方法,想怎么查就怎么查

热点排行