当前位置:编程学习 > C#/ASP.NET >>

有个简单问题不明白,望高人解答

设计数据库时我们经常用到关系表,有一张表存两张各自的主键,代码中我们用到的实体

在前台页面我们要在同一个列表显示出那两张表的内容,因为它们是一对一关联的,以前我们是用视图然后写个视图的实体,这样造成新建的很多视图

问题:不想用视图,那我在代码中怎么让它显示在同一个实体里?是用SQL去拼左连右连?还是通过一个ID去另外一张表读取内容?

--------------------编程问答-------------------- gf --------------------编程问答-------------------- 不想用视图就用存储过程,视图太死板,存储过程相对灵活,并且能够实现视图实现不了的功能,例如数据及筛选等。在程序里映射就是根据这个存储过程生成的一个复杂类型的实体 --------------------编程问答-------------------- 存储过程也不想用!很难维护!然后逻辑又写的一大堆在里面!

以前老系统用!现在先系统不用!  还有没有什么好的建议 --------------------编程问答-------------------- 1:1使用内连接就可以了(inner join) --------------------编程问答-------------------- 首先,不用视图,那SQL的查询语句优先,并且这也是最优的选择:
SELECT A.*, B.* FROM table1 A, table2 B WHERE A.id = B.id AND A.field = @a_field and B.field = @b_field

如果没有in,优先使用参数化查询,这跟SQL拼接无关;如果有in,那只能拼sql,但必须对检查SQL的注释符号--,字符串里的引号,like的转义字符。

其次,如果不能使用SQL(如用了某个ORM),则生成ID列表,再用in语句去查询了。把此过程封装一下,也是一个非常实用和常用的过程。如果还是要检查输入的,防止SQL注入攻击。

最后,得到数据集,可以用LinQ的ToList从而不用重新定义实现类,还可以动态生成一些统计字段等。 --------------------编程问答-------------------- 视图其实也很难维护,并且一旦用了,很多人为了避免写SQL查询,就会大量采用已有的视图,这会导致很多不必要的查询。所以,大表禁用外键和视图都是必须的手段。只有查询没有修改,不建议使用存储过程,除非该查询耗用大量的资源和占用大量的时间。存储过程用于复杂的事务性的查询和修改里。原则上,能用SQL的地方尽量使用SQL;如果要用到事务,尽量采用存储过程。

SQL查询大部分都可以做到ADO.NET的参数化查询,做不到必须要检查SQL的输入。

绑定输出表格,最好用LINQ的SELECT....ToList,非常灵活和强大,可以支持再过虑、再计算。也不用重新写大量的实体类。 --------------------编程问答-------------------- 为什么要显示在同一个实体里呢? 直接关联查询出来 直接展示就不完了么? --------------------编程问答-------------------- 从感情上支持“通过一个ID去另外一张表读取内容”,即程序控制。
视图和连接,在不同的数据库中差异较大,比如ORACLE、SQL SERVER、ACCESS、SQLITE, --------------------编程问答-------------------- 内联吧 --------------------编程问答-------------------- 用表函数吧,还可以传参数:
http://www.cnblogs.com/insus/articles/1678901.html --------------------编程问答-------------------- 至今没用过实体类,都是直接查询显示...我是不是很低端啊
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,