简单的问题,我有一个应用程序,取决于您是在管理系统还是在公共网站上,我想要显示不同的结果。
示例:在管理中的新闻报道的数据库中,我可以将列值'showonsite'设置为false。所以我希望这只在管理面板中显示,而不是在现场网站上显示。
我的问题是,因为我需要相同的信息只有一个列更改,实时网站只显示真值和管理显示两者。没有复制粘贴代码,最有效的方法是什么?
由于
答案 0 :(得分:3)
请参阅第二个查询。
我可能会遗漏一些东西。对于非管理员用户,您是否只是不 SELECT
新闻故事且showonsite
列设置为false?
例如:
SELECT
*
FROM
dbo.NewsStory
WHERE
showOnSite = 1
修改强>
哦!我知道了。您正在谈论复制和粘贴查询。晚了。 >。<
如果您有存储过程,则可以传递一个值以指示给定用户是否为管理员:
SELECT
*
FROM
dbo.NewsStory
WHERE
showOnSite = 1
OR @isAdmin = 1
答案 1 :(得分:2)
取决于你编写代码的位置 - 如果你使用存储过程,那么像@liveonly这样的参数就足够了。 Sameway如果你在C#方法中直接使用内联sql查询,那么参数live_only应该足够好,以确定是否添加条件的额外条件。
例如。在SP
SELECT *
FROM news
WHERE ((@live_only=true AND showonsite=true) or (@live_only=false))
这样,对于管理面板,可以使用@live_only = false调用它,但实际站点的值为true。
答案 2 :(得分:1)
不,我不会使用视图,我不会复制任何代码。听起来这只是对查询的条件过滤器。
您没有明确表示您是如何进行数据访问的,但这可能意味着aasdij增加了一行TSQL,添加了一个so参数,添加了额外的LINQ .Where子句等等