lightswitch开发中的连接字符串跑哪里去了???

        刚入门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”的地址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值