在我当前的项目中,我使用的是SQL CE。由于它不支持存储过程,所以我必须在存储库中编写sql查询。在c#代码中编写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速度更快。
我应该接受哪种选择?在这种情况下,最佳做法是什么?
这也意味着应用程序必须去检索资源,也可能是一个次要的性能。 – 2010-07-04 21:30:57
这就是我为复杂的SQL命令所做的。它允许您像在Management Studio中那样自由编辑SQL,并提供适当的语法着色。与数据库命中相比,读取嵌入式资源的性能损失可以忽略不计。 – 2010-07-04 21:40:34
你的权利,与数据库命中相比,它是微不足道的......它和使用StringBuilder一样重要。 – 2010-07-04 22:13:15