2012-12-06 234 views
1

我需要将SQL Server Compact数据库从3.5升级到4.0版。我使用LINQ到SQL将SQL Server CE数据库(.sdf)从3.5更新到4.0

我尝试了一些事情,我对计算器发现,没有帮助:

  1. 我试图Add 4.0 connection对话框(没有错误消息,BAK文件的创建)

  2. 我试图升级代码:(没有错误消息)

    System.Data.SqlServerCe.SqlCeEngine engine= new System.Data.SqlServerCe.SqlCeEngine("Data source = ..."); 
    engine.Upgrade(); 
    
  3. 我检查数据库损坏(系统返回的有没有腐败问题)

    System.Data.SqlServerCe.SqlCeEngine engine= new System.Data.SqlServerCe.SqlCeEngine("Data source = ..."); 
    engine.Verify(); 
    

    这些操作我想重新创建的dbml文件后 - 我收到错误消息

    不兼容的数据库版本(..)DB版本4000000,请求版本3505053(.. )

  4. 在调试模式下我检查db.Connection.ServerVersion =返回3.5.8080.0

  5. 在数据库连接属性的版本是4.0.8876.1

有什么建议?

回答

1

将数据库升级到4.0后,不能再创建dbml文件,因为负责此操作的工具仅适用于3.5版的数据库文件。一种可能的解决方法是拥有两个版本的数据库,一个用于生成dbml 3.5,另一个用于数据库。请记住使用SqlCeConnection对象初始化DataContext对象,否则4.0将不适用于LINQ to SQL - 或者您可以尝试我的SQL Server Compact Toolbox,它允许您直接从4.0数据库文件生成DataContext(必须仍然使用SqlCeConnection进行初始化对象)

+0

非常感谢,它为我工作! – Prokurors

+0

@ErikEJ在我的情况下,即使在我使用SQL Server Compact Toolbox生成DataContext后,仍然需要用'SqlCeConnection'对象初始化它,否则我有这个“Incompatible Database Version”错误。 – infografnet

+0

更新了我的答案 – ErikEJ

相关问题