老有关问题:用三层架构时,怎么进行多表联合查询?求一比较优秀的解决办法
老问题:用三层架构时,如何进行多表联合查询?求一比较优秀的解决方法。
下面是我搜集整理的解决方法,请有经验的兄弟谈谈哪个比较好?或者给一些更加适合的。谢谢~
--------------------------------------------
1、自己新建一个可以和结果记录集对应的实体类。
2、用视图。
3、多数据记录集用DataTable传
4、自己构建一个返回DataSet的方法
------解决方案--------------------
进行多表查询?这不是在SQL语句中写的吗?跟三层架构有什么关系?
------解决方案--------------------
选1吧,1的效率最高,避免了装箱和拆箱操作,而且也容易添加事务锁
------解决方案--------------------
视图比较OO,
但有些数据库并不支持。
------解决方案--------------------
创建一个Stored Procedure,把结果放到实现定义好的DataSet里,或者用DataReader把结果读到一个ICollection<YourType>中。
不用View,我觉得会影响速度。
------解决方案--------------------
1 如果你说的多表查询是只得简单的例如
部门,员工
需要展示 员工的所在单位信息 这类问题的话,我会选择用实体类,将这些SQL的构建交给ORM完成,将实体类做成贫血模型。此时业务实体具备了简单的View功能(以下代码只是简单实例)
下面是我搜集整理的解决方法,请有经验的兄弟谈谈哪个比较好?或者给一些更加适合的。谢谢~
--------------------------------------------
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的方法,想怎么查就怎么查