[LightSwitch]-入门疑问系列-连接字符串跑哪里去了?
时间:2011-06-09 来源:kennyCheng
[LightSwitch]-入门疑问系列1-连接字符串跑哪里去了
刚好有一个进出口货运代理项目,不大不小,客户也挺熟悉,决定这次技术偿新,用LightSwitch beta2开发。
刚入门LS,就发现一个郁闷的问题,项目中的App.config中存储的ConnectionString并不是编译后程序使用的地址。
寻找ConnectionString
这里不是,就到Debug中看看,果然,在Bin/Debug中找到了web.config,关于ConnectionString的内容如下
<connectionStrings>
<add name="_IntrinsicData" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename='C:\Users\\CustomApply\Bin\Data\ApplicationDatabase.mdf';Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True" />
<add name="CustomeApply_ERPData" connectionString="Data Source=.;Initial Catalog=CustomeApply_ERP;Persist Security Info=True;User ID=sa;" />
</connectionStrings>
我在LS的Data中添加的DataSource是Database类型,“CustomeApply_ERPData”就是数据库的连接地址。但是,“_IntrinsicData”是什么数据库?
ApplicationDatabase.mdf的作用?
顺藤摸瓜,在程序的Data目录中发现了这个SQL Express数据库。到SQL 中打开查看。
原来这个数据库存放的是Membership的表结构,应该是在配置授权与认证的时候用到。
这个时候,有一个疑问,如果我在Data Sources里直接新建一个Table,这个Table会存放到哪里?
然后查看数据库中的表结构
果然,如果不是Attach To External Data Sources,新建的Table都会保存到ApplicationDatabase表中。
编译项目的时候发生了什么?
通过刚才的测试,我发现,表的新建是在编译的时候被添加到ApplicationDatabase中的,而每次编译“_IntrinsicData”都会还原成
"Data Source=.\SQLEXPRESS;AttachDbFilename='$(MSBuildProjectDirectory)\Bin\Data\ApplicationDatabase.mdf';Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True"
这样的格式。于是,干脆删掉ApplicationDatabase.mdf看看会有什么后果。
于是打开target文件,发现
原来这里就是生成web.config ConnectionString的地方。可惜在系统内禁止修改。不过可以在程序发布后,手动修改“_IntrinsicData”的地址。