.net 如何针对MDF文件运行SQL脚本?

.net 如何针对MDF文件运行SQL脚本?,.net,entity-framework-4,mdf,sql-scripts,ef-model-first,.net,Entity Framework 4,Mdf,Sql Scripts,Ef Model First,我已经使用EntityFramework4.0使用ModelFirst方法创建了一个数据库模型。然后,我使用从模型生成数据库创建了一个sql脚本。。。我还在我的App_数据文件夹中创建了一个SQL Server数据库文件。现在如何针对这个MDF文件运行SQL文件 我正在使用Visual Studio 2010。我找到了一个解决方案,但它有点粗糙 我有SQL Server Express(2008 R2)。因此,当从模型生成数据库时,我连接到它并让它在那里构建一个数据库。然后我转到C:\Progr

我已经使用EntityFramework4.0使用ModelFirst方法创建了一个数据库模型。然后,我使用从模型生成数据库创建了一个sql脚本。。。我还在我的App_数据文件夹中创建了一个SQL Server数据库文件。现在如何针对这个MDF文件运行SQL文件


我正在使用Visual Studio 2010。

我找到了一个解决方案,但它有点粗糙

我有SQL Server Express(2008 R2)。因此,当从模型生成数据库时,我连接到它并让它在那里构建一个数据库。然后我转到
C:\ProgramFiles\Microsoft SQL Server\MSSQL10\u 50.SQLEXPRESS\MSSQL\DATA
。10_50部分是因为版本不同,对您来说可能会有所不同。因此,在这个文件夹中有一个名为.mdf的文件,与数据库-.mdf类似。还有一个_log.ldf文件。我将这些复制到项目的App_数据文件夹中

这是可行的,但是为模型中的每个更改生成一个新的.mdf数据库非常耗时。所以我在发货前就这么做了


如果你找到更好的答案,请分享。

我遇到了同样的问题,以下是对我有效的方法

当我选择“从模型生成数据库…”时,我创建了一个新的MDF文件。这个过程运行良好,VisualStudio生成了所需的SQL脚本。但是,我不知道如何连接到同一个MDF文件来运行脚本

结果证明这很容易

  • 右键单击脚本上的,然后选择连接>连接

  • 应该已经为本地SQLEXPRESS实例设置了服务器名称和身份验证

  • 单击选项按钮

  • 单击附加连接参数选项卡

  • 按照以下步骤粘贴到数据库文件的路径中:

    AttachDBFilename=C:\Path\To\Database\LocalData.mdf;数据库=本地数据

  • 单击连接按钮

  • 如果您仍然无法连接,可能是因为已经存在打开的连接。检查服务器资源管理器,如果连接已打开,请右键单击并选择“关闭连接”

    只要SQL脚本保持连接状态,此过程还将创建持久连接。您需要关闭脚本或选择右键单击>连接>断开连接

    更多信息可在此问题中找到:

    我在使用EF5的mvc4中遇到了同样的问题,模型优先方法。我所做的是创建项目,添加新模型,在edmx图上添加实体和关联。右键单击图表并选择“从模型生成数据库”。这将生成sql文件

    现在,在解决方案资源管理器的App_数据文件夹中添加一个mdf文件,例如Database1.mdf(添加>新建项>数据>SQL Server数据库)

    右键单击>打开此mdf文件。现在在“属性”窗格中有了连接字符串。照原样复制就行了

    恢复到生成的SQL脚本,右键单击>执行。弹出窗口询问连接参数。确保服务器名称中的值正确(使用PC名称或127.0.0.1)

    现在,在“选项”中,单击“附加连接参数”选项卡并粘贴从mdf文件属性复制的连接字符串


    这对我来说是完美的,而且是合乎逻辑的。无需直接使用SQL Server安装目录。

    以上回答很好,但我必须在VS2013中执行更多步骤,但我确实通过以下帮助解决了问题

  • 我从现有的.mdf创建了一个ADO.NET模型
  • 右键单击->从模型生成数据库
  • 右键单击解决方案资源管理器中的.mdf并打开
  • 在“属性”窗格中,将连接字符串复制到剪贴板
  • 在ADO模型创建的SQLQuery窗口中,单击更改连接
  • 在“新建连接到服务器”窗口->其他连接参数->从剪贴板粘贴连接字符串
  • 在服务器资源管理器中右键单击数据库->新建查询
  • 将查询从ADO生成的脚本复制并粘贴到新的查询窗口
  • 将USE[yourdatabase.mdf]更改为使用[longPath],其中longPath是顶部下拉列表中列出的非常长的路径。最简单的方法是开始键入并按住CTRL-SPACE键
  • 运行查询
  • 保存长路径,因为您可以将其粘贴到ADO生成的任何新查询的USE[]中

  • 我希望这有助于某人-快乐编码

    我能得到一些关于否决票的反馈吗?赞成票。它是有用和清晰的。我从下面@jedatu的答案中得到了一个解决方案的提示必须替换为?我不能肯定地回答这个问题。我认为数据库名是什么并不重要,但对我来说,我总是让它与MDF文件名匹配,当然没有扩展名。@jedatu,我尝试了上面的方法,但出现了以下错误:无法打开物理文件“…\App\u Data\database.MDF”。操作系统错误5:“5(检索此错误的文本失败。原因:15105)”。无法将文件“…\App\u Data\Database.mdf”附加为数据库“Database”。(Microsoft SQL Server,错误:5120)要获得帮助,请单击:它非常完美,只是在第5步中需要粘贴mdf文件的连接字符串。好的,这一个有效:这不是一个有用的解决方案,因为大多数开发人员习惯于在其项目文件夹中创建mdf文件,不是在程序文件中。自从我最初的问题和答案提出以来已经有几年了,但我发现LINQPad可以处理
    .mdf
    文件。看看这个: