将connectionStringName设置为LocalSqlServer的元素的用途?
-
06-07-2019 - |
题
结果
1)默认情况下,配置元素的 connectionStringName 属性设置为 LocalSqlServer ,据我所知,此属性引用 <中定义的连接 machine.config 文件中的/ em>元素。 结果
a)我假设这个连接字符串是指数据库 aspnetdb.mdf ?!
b)我理解 aspnetdb.mdf 用于我们不>#8217; t手动创建成员资格或配置文件数据库(通过调用 aspnet_regsql ),但我仍然不知道 connectionStringName 属性设置为 LocalSqlServer 的配置元素的用途是什么?也就是说,他们何时以及为什么需要访问这个数据库?
c)如果我们通过 aspnet_regsql 手动设置成员资格数据库,那么会发生什么情况,因此请使用 aspnetdb.mdf ?配置元素如何知道我们<!>#8217;不使用 aspnetdb.mdf ,而是尝试访问我们创建的数据库?
结果
2)如果我们希望 machine.config 中的 LocalSqlServer 条目指向其他一些数据库文件,我们可以执行以下操作:
<connectionStrings>
<remove name="LocalSqlServer" />
<add name=”LocalSqlServer” ... />
</connectionStrings>
我理解<remove>
元素的目的是取消任何先前声明的具有相同名称的元素,但在上面的示例中,我们只是更改了现有连接的属性,因此 machine.config 没有<!>#8217;有两个同名的连接,为什么我们必须包含<=>元素?
结果
感谢名单
解决方案
来自MSDN上的 connectionStrings元素文章:
包含的连接字符串 在父配置文件中 继承,除非明确的元素是 在子配置文件中使用。 以下默认值 connectionStrings元素是 在Machine.config文件中配置。 复制代码
<connectionStrings> <add name="LocalSqlServer" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" /> </connectionStrings>
因此,如果未修改配置文件的该部分,它将自动拥有该连接字符串。
其他提示
使用的约定是可以选择完成相同任务的众多惯例之一,但当时在MS团队的ASP.NET团队中的人真的是唯一可以说<!>的人。 <!>为什么QUOT;使用了那套公约。我的理解是,当前配置的目的是让初学者尽可能容易上手。即运行一些向导,使用预先配置的设置自动生成数据库,拖放一些安全控件,它们可以使用。由于这是专为初学者设计的,因此更有经验的开发人员遇到了您现在遇到的同一组问题,因为深入研究这些部分如何组合在一起并不简单。
您在machine.config中会注意到的一件事是,所有提供程序(Membership,Roles,Profile等)都使用此LocalSqlServer连接字符串名称,该名称再次支持初学者方案。因此,要使用您自己的数据库,您需要删除LocalSqlServer的默认定义并定义您自己的数据库。配置文件定义中没有替换元素,因此您必须使用删除/添加序列,这是逻辑等效项。通过更改连接字符串并将其名称保留为LocalSqlServer,machine.config中的所有提供程序都会指向您的数据库。这为您提供了数据库的默认提供程序定义。
现在,如果您想自定义提供程序定义,可以将它们添加到您自己的Web.config中并更改其设置。此时,您可以将LocalSqlServer作为自定义提供程序定义的连接字符串,或者您可以创建自己的连接字符串,然后将自定义提供程序定义指向您自己的连接字符串,您将不再需要担心LocalSqlServer。如果从web.config中删除LocalSqlServer,则需要将自定义提供程序定义添加到引用数据库字符串的web.config中。
希望这有帮助,
乔