2010-12-04 9 views
2

簡単な質問ですが、私はアプリケーションを持っており、あなたが管理システムにいるのか公共のウェブサイトにいるのかによって異なる結果を表示したいのです。SQLカラムtrueまたはfalse - ビューを使用しますか?

例:管理のニュース記事のデータベースでは、列値 'showonsite'をfalseに設定することがあります。ですから、私はこれを管理パネルにのみ表示し、ライブサイトには表示しません。

私の質問は、唯一の列の変更だけで同じ情報を必要とするため、ライブサイトは真の値と両方を表示する管理のみを表示することです。コードのコピーを貼り付けることなくこれを達成する最も効果的な方法は何ですか?

おかげ

答えて

2

、あなたのコードを書く場所によって異なります - あなたは、ストアド・プロシージャを使用する場合は、@liveonlyのようなただのパラメータは十分なはずです。 Sameway C#のメソッドでインラインSQLクエリを直接使用する場合、余分な条件が追加されるかどうかを判断するには、live_onlyパラメータで十分であるはずです。

たとえば、 SP

SELECT * 
FROM news 
WHERE ((@live_only=true AND showonsite=true) or (@live_only=false)) 

この方法では、adminパネルでは@live_only = falseで呼び出すことができますが、実際のサイトでは値はtrueです。

3

2番目のクエリを参照してください。

私は何かが不足している可能性があります。管理者以外のユーザーの場合は、ではないSELECTのニュース記事showonsiteがfalseに設定されていますか?例えば

SELECT 
    * 
FROM 
    dbo.NewsStory 
WHERE 
    showOnSite = 1 

編集:

ああ!そうですか。クエリのコピーと貼り付けについて説明しています。遅いです。 >。 「私はwouldn、私はそれのためにビューを使用していないだろう、

SELECT 
    * 
FROM 
    dbo.NewsStory 
WHERE 
    showOnSite = 1 
    OR @isAdmin = 1 
1

ありません:あなたはストアドプロシージャを使用している場合<

、あなたが与えられたユーザが管理者であるかどうかを示す値を渡すことができますコードをコピーしないでください。これはちょうどあなたのクエリの条件付きフィルタです。

など

、あなたは、データ・アクセスを行っているか、それを明確にしていないが、これはTSQLの余分なラインaasdij意味するかもしれないので、パラメータを追加する追加し、余分なLINQ .Where句を追加します
関連する問題