
在开发时,用默认生成即可. 在发布时肯定不能把连接包在dll里. 我的办法如下:
首先在UI(web/wpf)项目的config文件里加上连接字串.
<add name="EBSCConnectionString"
connectionString="Data Source=XXXX-PCInitial Catalog=EBSCPersist Security Info=TrueUser ID=saPassword=123456Wa"
providerName="System.Data.SqlClient" />
</connectionStrings>
第二步,你在DAL的根目录下件一个Settings.settings.cs文件, 把DAL项目下Properties文件夹下的Setting.Designer.cs 下的内容copy到里面
第三步 改Settings.settings.cs 连接字串(如下注释掉, 加从UI config 取)
public string EBSCConnectionString
{
get
{
//return ((string)(this["EBSCConnectionString"]))
return System.Configuration.ConfigurationManager.ConnectionStrings["EBSCConnectionString"].ConnectionString
}
}
4. 保存,发布即可. (客户那里就可以在 exe.config 文件里改数据库连接了)
你怎么不把关键报什么错的提示加上呢,把这段代码加上试试try
{
Dc.SubmitChanges(System.Data.Linq.ConflictMode.ContinueOnConflict)
}
catch (System.Data.Linq.ChangeConflictException ex)
{
foreach (System.Data.Linq.ObjectChangeConflict occ in Dc.ChangeConflicts)
{
//以下是解决冲突的三种方法,选一种即可
// 使用当前数据库中的值,覆盖Linq缓存中实体对象的值
// occ.Resolve(System.Data.Linq.RefreshMode.OverwriteCurrentValues)
// 使用Linq缓存中实体对象的值,覆盖当前数据库中的值
occ.Resolve(System.Data.Linq.RefreshMode.KeepCurrentValues)
// 只更新实体对象中改变的字段的值,其他的保留不变
// occ.Resolve(System.Data.Linq.RefreshMode.KeepChanges)
}
// 这个地方要注意,Catch方法中,我们前面只是指明了怎样来解决冲突,这个地方还需要再次提交更新,这样的话,值//才会提交到数据库。
Dc.SubmitChanges()
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)