簡單的問題,我有一個應用程序,並依賴於您是否在管理系統或公共網站上我想顯示不同的結果。SQL列是true或false - 使用視圖?
示例:在管理中新聞報道的數據庫中,我可以將列值'showonsite'設置爲false。所以我希望只在管理面板中顯示,而不是在現場。
我的問題是,因爲我需要相同的信息只有一個列更改,活網站只顯示真正的值和管理,以顯示兩者。沒有複製代碼粘貼的最有效方法是什麼?
感謝
簡單的問題,我有一個應用程序,並依賴於您是否在管理系統或公共網站上我想顯示不同的結果。SQL列是true或false - 使用視圖?
示例:在管理中新聞報道的數據庫中,我可以將列值'showonsite'設置爲false。所以我希望只在管理面板中顯示,而不是在現場。
我的問題是,因爲我需要相同的信息只有一個列更改,活網站只顯示真正的值和管理,以顯示兩者。沒有複製代碼粘貼的最有效方法是什麼?
感謝
取決於你在哪裏編寫代碼 - 如果你使用存儲過程,然後就像@liveonly參數應該是足夠的。如果您直接在C#方法中使用內聯SQL查詢,那麼Sameway應該足夠好,以確定是否會添加額外的條件。
例如,在SP
SELECT *
FROM news
WHERE ((@live_only=true AND showonsite=true) or (@live_only=false))
通過這種方式,可以使用@live_only = false爲管理面板調用該方法,但對於實際網站,其值爲true。
請參閱第二個查詢。
我可能會錯過一些東西。對於非管理員用戶,您是否可以簡單地將而不是SELECT
新聞報道與showonsite
列設置爲false?
例如:
SELECT
*
FROM
dbo.NewsStory
WHERE
showOnSite = 1
編輯:
哦!我懂了。你在談論複製和粘貼查詢。晚了。 >。 <
如果你有一個存儲過程,你可以傳遞一個值,以指示給定用戶是否爲管理員:
SELECT
*
FROM
dbo.NewsStory
WHERE
showOnSite = 1
OR @isAdmin = 1
不,我不會用一個視圖,而且,一個我不會」不要複製任何代碼。這聽起來像這只是你的查詢條件過濾器。
你沒有說清楚你是如何進行數據訪問的,但這可能意味着增加了一個額外的TSQL,增加了一個這樣的參數,增加了一個額外的LINQ .Where子句,等等