【问题标题】:Migrating vs2008 to vs2012 - Exception LINQ to SQL Library将 vs2008 迁移到 vs2012 - 异常 LINQ to SQL 库
【发布时间】: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? 进行所有这些迁移的最佳方法是什么?

【问题讨论】:

    标签: c# .net linq visual-studio-2012 sql-server-ce


    【解决方案1】:

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

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

    【讨论】:

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