在 Microsoft Visual Studio 2017 中创建 SQL Server Compact Edition 数据库文件

在 Microsoft Visual Studio 2017 中创建 SQL Server Compact Edition 数据库文件

我正在按照在 Microsoft Visual Studio 2017 社区版中使用 C# 的教程进行操作。我应该向我的项目添加一个新的 SQL 数据库并为其添加扩展名.sdf

在教程中,他们从 IDE 附带的模板菜单中选择它,但我没有正确的模板。我看到的唯一数据库是“基于服务的数据库”,它使用扩展.mdf,并且还向我抛出一个小错误/警告:

SQL 数据库错误

有人知道如何解决这个问题吗?

编辑:

我已经到达这个屏幕...似乎我必须选择正确的一个,但我不知道在这里该做什么。

SQL 自定义安装屏幕

答案1

在 Microsoft Visual Studio 2017 中创建 SQL Server Compact Edition 数据库文件

微软将不再支持 Visual Studio 中的 SDF 文件

微软似乎已弃用SQL Server Compact建议使用SQL Server Express而是向前迈进。

文件扩展名为SQL Server CompactDB 数据文件是 SDF,因此只计划使用SQL Server Express以及其 DB 数据文件的相关 MDF 扩展。


Microsoft Connect

发布者斯里尼[MSFT] 2013 年 2 月 18 日上午 11:52

SQL Server compact 版本处于弃用模式,近期没有计划发布新版本。最新版本 SQL CE 4.0SP1(以及仍处于支持周期的早期版本)将在其整个生命周期内继续受到支持,Microsoft 承诺修复在这些版本中发现的任何重大生产阻碍问题。目前,我们认为此问题不属于该类别,因此我们将关闭此问题。

在台式机/笔记本电脑部署中,迁移到 SQL Server LocalDB/SQL Express 是许多当前用户的可行选择(http://msdn.microsoft.com/en-us/library/hh510202.aspx

来源


SQL Server Express

弃用

2013 年 2 月,微软宣布 SQL Server Compact Edition 已被弃用。

尽管没有计划推出新版本或更新,但微软将继续通过其标准生命周期支持政策支持 SQL Compact。此支持将于 2021 年 7 月结束。

来源


更多资源

答案2

SQLCE v4.0 仍然可用且发展迅速。您可以轻松地将其与任何版本的 Visual Studio 2019 一起使用。您甚至不必安装它 - 您可以将其作为私有部署分发,与您的应用捆绑在一起。

安装这个包,在您的项目中设置一些配置,然后就可以开始运行了。

它与 Entity Framework 6.x Code First Migrations 配合得很好。多年来,我的应用程序一直在使用它。我非常高兴。

这是我的数据上下文类的一个片段:

Partial Public Class Context
  Inherits DbContext

  Private Sub New(Connection As SqlCeConnection, LogSql As Boolean)
    MyBase.New(Connection, True)

    Dim sSessionSql As String

    Database.SetInitializer(New CreateDatabaseIfNotExists(Of Context))
    Database.SetInitializer(New MigrateDatabaseToLatestVersion(Of Context, Migrations.Configuration))

    Me.Database.Initialize(False)

    If Utils.Registry.LogSql OrElse LogSql Then
      sSessionSql = String.Empty

      Me.Database.Log = Sub(SqlCmd As String)
                          sSessionSql &= SqlCmd

                          EventLog.WriteEntry("SQL Log", sSessionSql, EventLogEntryType.Information)
                          sSessionSql = String.Empty
                        End Sub
    End If
  End Sub

  ...

End Class

如您所见,如果数据库不存在,它会在启动时创建一个新的数据库。

作为一个 ISV,如果我不得不强迫我的客户下载 +60MB 的安装程序来运行我的小型实用程序,我就会破产。

相关内容