之前我曾经发帖子询问过这个问题,发完帖子后自己测试了一下,得出了答案,但是最近项目组又有人提出这个问题,有点怀疑自己当初的测试代码。重新测试一下
问题:
项目中,给一个解决方案分层,在解决方案下,把数据库持久层(Persistence)作为一个项目。
在Persistence层中创建强类型的Adapter,会自动创建一个数据库的连结字符串,自动存放在app.config里面和setting.settings里面(貌似两个文件的连结字符串是关联的,改一个另外一个自动修改)
下面是问题出来了:
数据库连接字符串放在Persistence层:如果编译以后成Persistence.DLL则没有办法在运行的时候修改数据库连接了。 这样设计的话,我怎么样把连结字符串改在WEB.config里面以便运行时修改修改?NHIBERNATE可以自动调用运行域的配置文件,强类型构建的Dataset可以吗?
测试过程
1、数据准备:把本机Sqlserver中Northwind数据库Products表复制到 Pubs数据库中。用Update语句更新Pubs.Products表中ProductName都更改为"npubs"。
2、在测试项目Util层新建QueryPrductsAdpter.xsd数据库操作强类型。新建一个数据库连接NorthwindConnectionString。操作过程会在Util/App.Config中添加



新增加一个一个TableAdpater,取得Products表中的所有数据。命名为GetData();
3、在Web层添加测试页面,页面添加GridView1。
填写代码








4、运行,结果如图
5、在Web.config里面添加



名字一样,但是连接数据库变成了Pubs。
6、运行结果如图
显然,Web.Config的数据库连接字符串替代了App.Config里的。
7、更改Web.Config的名字,结果又是步骤4的图
结论:
如果在WEB.Config里面有Persistence层App.config同样名字的的connectString,则按照web.config里面的来,如果没有,则按照ADO的app.config来.