C# 在附加到较新版本的LocalDb时防止更新MDF文件

C# 在附加到较新版本的LocalDb时防止更新MDF文件,c#,sql-server,winforms,entity-framework-6,localdb,C#,Sql Server,Winforms,Entity Framework 6,Localdb,我有使用EF6的WinForms应用程序。该应用程序使用LocalDbstorage(2014),因为我需要它从Windows 7运行到Windows 10 它与app文件夹中的.mdf文件一起交付,并通过连接字符串将其附加 当我将.mdf文件(在SQL Server 2014 Express中创建)附加到较新版本的SQL Server Express时,.mdf已升级,无法再将其移植回Windows 7。这使我无法在多台计算机上开发应用程序,因为我无法使用该.mdf制作应用程序的发布副本,因为

我有使用EF6的WinForms应用程序。该应用程序使用
LocalDb
storage(2014),因为我需要它从Windows 7运行到Windows 10

它与app文件夹中的
.mdf
文件一起交付,并通过连接字符串将其附加

当我将
.mdf
文件(在SQL Server 2014 Express中创建)附加到较新版本的SQL Server Express时,
.mdf
已升级,无法再将其移植回Windows 7。这使我无法在多台计算机上开发应用程序,因为我无法使用该
.mdf
制作应用程序的发布副本,因为它在Windows 7上不再工作

唯一的方法是在所有开发人员机器上使用SQL Server 2014 Express

连接字符串中是否有防止升级的方法,或者是
.mdf
文件在较新版本的SQL Server Express上工作所必需的方法


我现在考虑在第一个应用程序启动时以编程方式生成
.mdf
文件,并执行脚本生成表和种子数据,然后附加该文件。我不需要考虑在那台机器上使用的是什么LocalDb版本。

否-在连接到较新的服务器实例时,您不能阻止或排除
.mdf
升级到当前的内部数据库版本


您需要在参与开发的所有计算机上使用相同版本的SQL Server(Express/LocalDB),或者需要通过SQL脚本或实体框架迁移来升级现有的数据库结构(可能还有静态查找数据)(或不依赖内部SQL Server数据库版本的类似可比机制)

您在启动时创建和播种数据库的计划可能是解决您问题的最正确的方式。另一种选择是将MDF文件放置在解决方案目录之外,以使它始终保持在特定OS的本地。考虑从<>代码> MDF部署和使用。数据库项目/DACPAC(换句话说,通过脚本进行部署)。基于文件的部署听起来很方便,但事实并非如此。