在查询的时候,发现很多现在的项目的框架都存在“拼接SQL字符串”的现象。最常见的就是生成“报表和图表”的时候,根据不同的条件“拼接Sql语句”,能拼接到几张A4纸那么长。个人认为,如此“拼接Sql”字符串,不好调试,而且费时费力。有没有什么好的方法,可以避免拼接“Sql字符串”,解决这个烦恼???比如使用:“Linq to Sql”可以吗??? 
主要是因为涉及到“Silverlight”在“Asp.net”项目中的使用,要用到“RIA WCF Service”。

解决方案 »

  1.   

    在查询的时候,发现很多现在的项目的框架都存在“拼接SQL字符串”的现象。最常见的就是生成“报表和图表”的时候,根据不同的条件“拼接Sql语句”,能拼接到几张A4纸那么长。个人认为,如此“拼接Sql”字符串,不好调试,而且费时费力。有没有什么好的方法,可以避免拼接“Sql字符串”,解决这个烦恼???比如使用:“Linq to Sql”可以吗??? 
    主要是因为涉及到“Silverlight”在“Asp.net”项目中的使用,要用到“RIA WCF Service”。
      

  2.   

    拼接SQL容易被SQL注入,这种方式貌似现在用的比较少了
      

  3.   

    “拼接SQL字符串”和Linq to Sql是两个不同的解决方案。
    我这不知道你所谓的“拼接SQL字符串”是什么意思。
    我个人感觉,“拼接SQL字符串”是存储过程,但我认为,存储过程的话,不会出现根据不同的条件,能拼出几张纸来。
    还是根据成本和环境的综合因素考虑问题。
      

  4.   


    就是用C#,拼接“SQL字符串”了,就是C#.append...
      

  5.   

    用“Entity Framework”可以吗?好像“Access”不支持的对吧???
      

  6.   

    借一下,“hzzasdf”的回答,说的很清楚了。silverlight无非是用web service来访问服务端(ria service无非是系统自动生成web service的代理类),至于ef, ado.net都是访问数据库的方法,跟ria service一点关系没有。我公司的silverlight项目,访问数据库,用ef和ado.net都有。无非是ef直接返回对象,ado.net要自己把dataset转换成自己需要的对象罢了。
      

  7.   

    谢谢大家一直以来的帮助,现在明白了。“ADO.net”(连接字符串类/Adapter类,两种方式)、“Linq to sql”、“EF”这些都是访问数据库的方式,是DAL层,而“RIA WCF Service”是BLL层,是这样的吧???还有两个问题能和大家确认下吗?1、Access下不能使用“EF”,只能用“Linq to Sql”,以此来直接返回“数据对象”,被SL使用,是这样吗?2、EF的核心“EMD”(“edmx文件”),一个“edmx文件”好像可以包含好几个“实体类对象”,只要在对应的“数据库表”上面打上勾好像就可以生成了,是这样吗?
      

  8.   

    追加一个问题:3、就这样一句[EnableClientAccess()]
      public class OrganizationService : LinqToEntitiesDomainService<AdventureWorksEntities>
      {“EF”和“RIA WCF Service ”就结合在一起了?
      

  9.   

    报表要结合不同的查询条件,不同的表,拼接SQL还是很有必要的。