DotNetNuke中理解{objectQualifier} {databaseOwner}

在DotNetNuke3.0中,如果我们用英文版安装的时候,在数据库中我们可以看到大部分表都有一个前缀“_DNN”。为什么要设置这个前缀呢,是因为利用objectqualifier(表现为前缀),可以允许在同一个数据库中建立多个主机。在每个存储过程和表中都指定了objectqualifier。例如,你可以设置一个主机利用 'DNN1'作为前缀,同时设置另一个主机的前缀为'DNN2'。通过这种方式,可以在同一个数据库中生成两个用户表,其结构一致,功能一致,但是一个表名为“DNN1_Portals”,另一个表名为“DNN2_Portals”。这两个表且能够在同一个数据库并行运行,而不相互影响。

在什么地方设置表安装时候的前缀呢?在DNN3.0 web.config(第273行)中,我们可以看看

<data defaultProvider="SqlDataProvider">
 <providers>
  <clear />
  <add name="SqlDataProvider"
  type="DotNetNuke.Data.SqlDataProvider, DotNetNuke.SqlDataProvider"
  connectionStringName="SiteSqlServer"
  upgradeConnectionString=""
  providerPath="~\Providers\DataProviders\SqlDataProvider\"
  objectQualifier="DNN"
  databaseOwner="dbo" />
 </providers>
</data>

在这个xml节中,objectQualifier="DNN"设置了前缀,所有的表和存储过程,就加上了这个相应地前缀。上边的实例中,只不过在这里设置了两个不同的前缀而已,一个为"DNN1",一个为"DNN2"罢了。

接下来,我们先看看在创建表和存储过程的SQL脚本中,其具体实现。

CREATE TABLE {databaseOwner}{objectQualifier}PortalAlias (
  [PortalAliasID] [int] IDENTITY (1, 1) NOT NULL ,
  [PortalID] [int] NOT NULL ,
  [HTTPAlias] [varchar] (200)
) ON [PRIMARY]
GO
CREATE procedure {databaseOwner}{objectQualifier}GetPortalByAlias
@HTTPAlias nvarchar(200)

时间: 2024-11-08 19:57:40

DotNetNuke中理解{objectQualifier} {databaseOwner}的相关文章

DotNetNuke中的函数式编程手法分析

"Dear, you love me, you just don't know you love me"是美国肥皂剧FRIENDS中的经典台词,中文翻译为<老友记>或者<六人行>,比较一下这句:"Programmer, you use FP, you just don't know you use FP",句式上和逻辑上是不是很相似? 现在我想说说FP,Functional Programming,中文翻译为函数式编程,与"命令编程

在DotNetNuke中加入组织架构(三)

当我们将组织架构的功能开发完成之后,就可以在系统中添加组织架构了. 在这里,有一点需要抱怨一下DotNetNuke,并且赞扬一下Joomla等CMS,Joomla和Drupal都是可以比较方便的增加管理模块的,也就是非普通模块,而是后台管理的模块,如果大家到Joomla的网站上去看一下它的Extentions的话,就可以发现Joomla有多少管理模块了:但是--,也可能是因为我的无知,我还不知道如何将我的某一个功能添加到DotNetNuke的"主机管理"或者"网站管理&quo

在DotNetNuke中加入组织架构(一)

稍微解释一下:我希望用DotNetNuke不但可以做Internet的东西,而且也可以做Intranet的业务:从目前的情况来看,一般来说,Intranet的业务逻辑可能比Internet的业务逻辑要稍微复杂一点--当然,这并不是确定的事情.在这方面做了一些探索,希望将之分享出来. 对于DotNetNuke来说,已经有了"安全角色","安全角色"在DotNetNuke中非常重要,是用来控制页面和模块权限非常重要的概念,在我们的系统中,安全角色和权限,形成了一个权限矩

在DotNetNuke中加入组织架构(二)

组织架构首先一定是树状的,这就是为什么我们要抛弃DotNetNuke原有的安全角色而重新另建一套的一个最主要的原因--当然,并不是抛弃,在之前说过,我们希望"安全角色"和"组织架构"可以各司其职,在我们的系统里面各自发挥作用而已. 除了体现上下级关系的"部门"之外,我们还希望仍然保留一个"组"的概念.部门体现的是层级关系,而Group则是体现一种横向的关系,比如,把所有的"部门"的负责人都放到一个"

开发过程中理解用户体验的特性

放下对这个标题的疑惑,我们先来理解一下用户体验设计在团队中所表现出的一些"特性". 潜性 记得看过一句类似这样的文字:"好的设计是让用户体会不到设计的存在": 用户体验设计也应该不例外, 无论对用户或在团队合作中, 用户体验设计表现出的应该更多的是低调,这里有两层意思: 对于用户 - 分析和挖掘用户潜意识的需求和习性, 给用户本质上的满足, 从而带来顺畅, 自在的感受. 对于团队 - 用户体验的确重要, 但它应该是基础的需求, 而不是炫耀的特性, 何况好的用户体验设

在DotNetNuke中利用Reports模块拼凑数据(二)

在(一)中,我们描述了如何在一分钟之内(如果你SQL语句足够熟练的话),将已有的数据重新打乱.组合.排列,等等,Whatever you want,总之,是用已有的数据,组合成一个新的数据模块.我们介绍了Reports,这个模块非常方便,也极其简单,就是把我们用SELECT语句选择出来的列,全部都放在一个模块之内,其实,这就是一个非常开放的模块.也非常好用的模块,如果我们自己开发的模块,可以达到这种效果的话,那么,应该就算是非常成功了. Reports的新版(大概是4.0以后的版本,07年的版本

在DotNetNuke中利用Reports模块拼凑数据(一)

老实说,我非常喜欢"自由度"大的模块:而且,我更喜欢"数据列表"性的模块,而不是像Text/HTML模块一样,只是一个FCKEditor而已,剩余的东西交给用户.没有"历史数据".没有"痕迹",一旦你做了修改,这些修改就实实在在的替换掉了原来的东西,原来的数据就变得不可查询了.对于一个网站来说,这并不好,所以Text/HTML只适合做相对来说最简单的静态页面,在某种情况下,和Google Sites有点类似. Forum模块,

在DotNetNuke中利用Reports模块拼凑数据(三)

这个(三)基本上是滥竽充数的,因为看到了两个网友的留言,所以在这里统一回复一下--确实是充数. 关于Reports模块的分页问题: 其实新版的Reports模块已经支持分页了,在设置界面就有,其实是非常简单的一个设置,如下图所示: 问这样的问题,表示提问题的这位同学根本没有使用过Reports模块啊,呵呵. 至于样式嘛,当然,Reports缺省的Grid方式是不能设置的(其实Grid也已经不错了),所以又提供了HTML和XSL两种列表解析方式,把这两种方式弄熟了,到处都可以用得到,所以,Repo

C++中理解“传递参数”和异常之间的差异

从语法上看,在函数里声明参数与在catch子句中声明参数几乎没有什么差别: class Widget { ... }; //一个类,具体是什么类// 在这里并不重要void f1(Widget w); // 一些函数,其参数分别为void f2(Widget& w); // Widget, Widget&,或void f3(const Widget& w); // Widget* 类型void f4(Widget *pw);void f5(const Widget *pw);cat