在c#代码中编写sql查询的最佳实践是什么?>

问题描述 投票:7回答:7

在当前项目中,我正在使用SQL CE。由于它不支持存储过程,因此我必须在存储库中编写sql查询。

选项1:

StringBuilder query = new StringBuilder();
query.Append("SELECT");
query.Append("    c.CUSTOMER_ID,");
query.Append("    COALESCE (c.FIRST_NAME, '') + ' ' + COALESCE (c.LAST_NAME, '') AS FULL_NAME");
query.Append("    ct.NAME as CUSTOMER_TYPE");
query.Append("FROM ");
query.Append("    CT_CUSTOMER_TYPE AS ct INNER JOIN CUSTOMER AS c ON ct.CUSTOMER_TYPE_ID = c.CUSTOMER_TYPE_ID");

选项2:

string query = "SELECT c.CUSTOMER_ID, COALESCE (c.FIRST_NAME, '') + ' ' + COALESCE (c.LAST_NAME, '') AS FULL_NAME, ct.NAME as CUSTOMER_TYPE FROM CT_CUSTOMER_TYPE AS ct INNER JOIN CUSTOMER AS c ON ct.CUSTOMER_TYPE_ID = c.CUSTOMER_TYPE_ID";

选项1似乎更具可读性,尤其是当我有10个以上的表联接时,但选项2更快。我应该接受哪个选项,在这种情况下,最佳做法是什么?

在当前项目中,我正在使用SQL CE。由于它不支持存储过程,因此我必须在存储库中编写sql查询。选项1:StringBuilder查询= new StringBuilder();查询......

c# coding-style
7个回答
15
投票

选项2可能要快几纳秒,但是当您增加在数据库中实际执行的时间(几毫秒)时,几纳秒几乎不会被记录为噪音。


5
投票

选项3-使用verbatim string literals


4
投票

我将SQL字符串放入资源文件中,它允许轻松地编辑多行查询,甚至使用IntelliSence工具提示也可以提供对该查询的强类型命名访问。


0
投票

为什么不选择3:


0
投票

我总是使用第二种方法,因为它快得多。第一种方法使用了太多的代码行,导致更大的开销。



0
投票

我已经习惯这种方法:

© www.soinside.com 2019 - 2024. All rights reserved.