3

現在、クエリをこのような変数に入れています。

query = @"  select top 1
                u.UserID
            from
                dbo.Users u
            where
                u.SystemUser = 1
                and u.Status = @Status";

これに関する問題は、新しい行に移動するとインデントが失われ、自分で追加する必要があることです。

誰かがより良い方法を知っていますか? ストアド プロシージャが (このインデントの問題を解消する) 可能性があることは知っていますが、純粋なデータ検索に必ずしも優れているかどうかはわかりません。

4

5 に答える 5

6

TSQL が嫌いな人は無視してください。一部の TSQL を知っていても、本質的に問題はありません。とにかく、私はこれにアプローチします(フォーマットを維持する場合、これは私の標準ではありません-しかし...まあ);

                // your existing code at, say, this level
                var query = @"
select top 1
      u.UserID
from
      dbo.Users u
where
      u.SystemUser = 1
      and u.Status = @Status";

                // some more code at, say, this level

TSQL を左側に置くことで、IDE でのインデントなどを簡単に行うことができますが、TSQL も短くなり、トレースを見るときにデバッグしやすくなります。 . の前に改行を入れるselectことも整理整頓に役立ちます。

個人的には、コードのインデントと TSQL のインデントがばらばらであることも TSQL を見つけるのに役立ちます。TSQL は私にとって非常に重要なので、これは良いことです。また、(より適切な用語が必要なため) 「世界」を切り替えたばかりであることを強調することも、有害ではありません。

于 2011-08-04T12:40:08.047 に答える
3

少なくとも LINQ の使用を検討する必要があります。学習曲線はありますが、クエリ構文がコンパイラによってチェックされるという利点があります。

これが Web アプリケーションであるかどうかはわかりませんが、ユーザー入力 (Web URL やブラウザーからの投稿データなど) からクエリへの入力を取得している場合は、ユーザー入力を文字列に埋め込んでから送信します。また、クエリ エンジンは、クエリを実行する他の方法よりも SQL インジェクション攻撃のリスクが高くなります。

Entity Framework を使用することも、優れたアプローチの 1 つです。私は最近 Code First メソッドを使用しましたが、非常にエレガントです。最後に、ストアド プロシージャも良い方法です。

于 2011-08-04T12:27:01.143 に答える
1

あなたはいつでもこれを行うことができます:

query = " select top 1"
      + "     u.UserID"
      + " from"
      + "     dbo.Users u"
      + " where"
      + "     u.SystemUser = 1"
      + "     and u.Status = @Status";

少なくともそうすれば、IDE は文字列をインデントしますが、SQL はインデントしません。この方法を使用する場合は、各行の先頭にスペースを追加するように注意する必要があります。

より良い賭けは、LINQ を使用することです。

result = (from
             u in dbo.Users
         select
             u.userId
         where
             u.SystemUser == 1 &&
             u.Status = @Status
).Take(1)
于 2011-08-04T12:25:23.843 に答える
1

まず、SQL のフォーマットは、人間がそれを見る場合にのみ重要です。

本当にインデントを保持したい場合は、文字列をリソースに入れることができます (リソース エディターで SHIFT+ENTER を使用して新しい行を挿入します)。Visual Studio マジックのおかげで、リソースへのアクセスは簡単です (Properties.Resources.*)。

WPF を使用している場合は、XAML リソースで遊ぶこともできます。

于 2011-08-04T12:27:22.550 に答える
0

または、さまざまな方法を使用して、使用できるものを取得できpure data
ます

stored procedues
LINQ 2 SQL
Entity Framework
ADO.NET

ハードコーディングされた SQL 構文は、ベスト プラクティスではありません。

于 2011-08-04T12:25:38.860 に答える