2010-12-04 84 views
2

簡單的問題,我有一個應用程序,並依賴於您是否在管理系統或公共網站上我想顯示不同的結果。SQL列是true或false - 使用視圖?

示例:在管理中新聞報道的數據庫中,我可以將列值'showonsite'設置爲false。所以我希望只在管理面板中顯示,而不是在現場。

我的問題是,因爲我需要相同的信息只有一個列更改,活網站只顯示真正的值和管理,以顯示兩者。沒有複製代碼粘貼的最有效方法是什麼?

感謝

回答

2

取決於你在哪裏編寫代碼 - 如果你使用存儲過程,然後就像@liveonly參數應該是足夠的。如果您直接在C#方法中使用內聯SQL查詢,那麼Sameway應該足夠好,以確定是否會添加額外的條件。

例如,在SP

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

通過這種方式,可以使用@live_only = false爲管理面板調用該方法,但對於實際網站,其值爲true。

3

請參閱第二個查詢。

我可能會錯過一些東西。對於非管理員用戶,您是否可以簡單地將而不是SELECT新聞報道與showonsite列設置爲false?

例如:

SELECT 
    * 
FROM 
    dbo.NewsStory 
WHERE 
    showOnSite = 1 

編輯:

哦!我懂了。你在談論複製和粘貼查詢。晚了。 >。 <

如果你有一個存儲過程,你可以傳遞一個值,以指示給定用戶是否爲管理員:

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

不,我不會用一個視圖,而且,一個我不會」不要複製任何代碼。這聽起來像這只是你的查詢條件過濾器。

你沒有說清楚你是如何進行數據訪問的,但這可能意味着增加了一個額外的TSQL,增加了一個這樣的參數,增加了一個額外的LINQ .Where子句,等等