将 vs2008 迁移到 vs2012 - 异常 LINQ to SQL 库

Posted

技术标签:

【中文标题】将 vs2008 迁移到 vs2012 - 异常 LINQ to SQL 库【英文标题】:Migrating vs2008 to vs2012 - Exception LINQ to SQL Library 【发布时间】:2013-12-06 02:05:22 【问题描述】:

我对 Visual Studio 比较陌生,我认为最好的方法是 [sarcasm] 做一个大型项目 [\sarcasm]。

这里要做的工作总结: VS2008 -> VS2012 Windows7 -> Windows8 SQL CompactServer v3.5 -> SQL CompactServer v4.0 .NET Framework v2.0 -> .NET Framework v4.0

我遇到的一个问题是,即使我已将 VS 中的数据库文件从 SQL_CE_v3.5 迁移到 SQL_CE_v4.0 并更新了对 System.Data.SqlServerCe (4.0) 的引用,我仍然得到以下信息尝试通过以下方式打开 db 文件时出现异常。

DB.DataContext = new DB.DataContext(CONNECTION_STRING);

例外:

System.InvalidOperationException: Cannot open '|DataDirectory|\Database.sdf'. Provider 'System.Data.SqlServerCe.3.5' not installed.
at System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Initialize(IDataServices dataServices, Object connection)
at System.Data.Linq.DataContext.Init(Object connection, MappingSource mapping)
at System.Data.Linq.DataContext..ctor(String fileOrServerOrConnection, MappingSource mapping)
.
.
.<br>

问题: 如何在此处将提供程序名称更改为 4.0 而不是 3.5? 进行所有这些迁移的最佳方法是什么?

【问题讨论】:

【参考方案1】:

使用 SqlCeConnection 对象而不是连接字符串初始化 DataContext 对象,如下所示:

DB.DataContext = new DB.DataContext(new SqlCeConnection(CONNECTION_STRING));

【讨论】:

成功了!!...非常感谢!!在这里帮助我理解...如果直接传递 CONNECTION_STRING,LINQ 库会尝试使用它们生成的工具(即 CE3.5 db)打开它们? PS。 VS2012 不再支持 LINQ 的讨论是什么? 如果你提供了一个连接字符串,并且它被解析为不是一个服务器连接字符串,它被硬编码为使用 3,5 提供程序。 知道了....谢谢您的帮助...我花了相当多的时间来解决这个问题....

以上是关于将 vs2008 迁移到 vs2012 - 异常 LINQ to SQL 库的主要内容,如果未能解决你的问题,请参考以下文章

VS 2008 迁移到 VS 2013 时出现 User.Identity.Name 为空的情况

VS2012 到 VS2015 迁移

将VS 2012迁移到VS 2015后,C ++项目中的Xmemory错误

问题:工程迁移 VC6->VS2008->VS2010

从 VS6 移植到 VS2008 时在不寻常的架构中使用单元测试?

将 C++ 从 VS2003 迁移到 VS2005 需要哪些代码更改?