Sql 如果出了一些混乱和缓慢的事情,你必须使用proc

Sql 如果出了一些混乱和缓慢的事情,你必须使用proc,sql,linq,inline,Sql,Linq,Inline,Linq To SQL的一个巨大优势是,您可以将过滤器链接在一起——您的where子句只是根据需要通过您的逻辑动态添加的。您不需要仅仅因为需要基于多个参数调用一组数据就创建新的进程。已经广泛使用嵌入式SQL,真正的危险在于它是一种代码生成技术。您编写C代码(或任何语言),然后切换到SQL,然后再次返回C。在编译之前,预处理器会将代码重写为全部C。结果可能会生成非常混乱的错误消息。您必须学习API以与数据库交互,而嵌入式SQL本应将您从中解放出来。最后,将业务规则嵌入查询可能会混淆业务层和数据层。

Linq To SQL的一个巨大优势是,您可以将过滤器链接在一起——您的where子句只是根据需要通过您的逻辑动态添加的。您不需要仅仅因为需要基于多个参数调用一组数据就创建新的进程。

已经广泛使用嵌入式SQL,真正的危险在于它是一种代码生成技术。您编写C代码(或任何语言),然后切换到SQL,然后再次返回C。在编译之前,预处理器会将代码重写为全部C。结果可能会生成非常混乱的错误消息。您必须学习API以与数据库交互,而嵌入式SQL本应将您从中解放出来。最后,将业务规则嵌入查询可能会混淆业务层和数据层。
Linq避免了其中一些问题。首先,Linq是语言的一部分。构造的工作方式或多或少与程序员的期望相同。其中涉及一些SQL类型的语法,但大部分语法都集中在宿主语言(即C#)上。编译检查是对您编写的实际代码进行的。因此,在预处理之前不需要将错误转换为语法。查询的结果是对象和集合,正如您所期望的那样。然而,在数据层中仍然存在混合业务逻辑的危险。此外,Linq在错误消息方面也有自己的问题,其中涉及的字段通常不包括在内。尽管如此,它还是对象世界和关系世界之间的一个很好的折衷方案。

是的,但如果需要更改,它需要编译整个层+部署。在这种情况下,存储过程提供了一个优势,据我所知,这也是我不断听到“内联SQL不好”的原因。数据访问层可以覆盖一个大的主题。存储过程确实有助于维护。您还可以让一些WebService充当数据层,并且可以在不必更新主应用程序的情况下进行更新。不管怎样,即使您使用的是过程,也会在数据层上进行一些数据清理。@Psycho先生,存储过程在这种情况下没有任何优势。例如,当您添加一个新的DB字段时,需要更改任何相关的存储过程,通常包括参数列表。但实现这一点的工具远不如使用Linq to SQL或内联查询用C#编写真正的DAL。因此,我认为存储过程是对完整DAL的补充,而不是替代。@Ash:当然,存储过程提供了一个好处:如果存储过程中存在错误,您只需修复它并部署存储过程即可-无需更改代码和安装应用程序!但是,对LINQ查询的更改需要重新编译,而不是存储过程。我认为这就是远离内联SQL代码的原因。我认为您应该说“远离LINQ到SQL”以及内联SQL。是这样吗?