2010-11-20 68 views
6

我已经使用实体框架4.0创建了一个模型优先的方法的数据库模型。然后,我使用从模型生成数据库创建了一个sql脚本...我还在App_Data文件夹中创建了一个SQL Server数据库文件。我现在如何针对这个MDF文件运行SQL文件?如何针对MDF文件运行SQL脚本?

我使用Visual Studio 2010中

+2

我可以得到一些反馈吗? – gligoran 2010-11-21 18:34:58

+0

Upvote。这是有用的和明确的。我从下面的@jedatu的答案中得到了一个解决方案。 – Zeeshan 2013-07-15 09:55:30

回答

1

我找到了解决办法,但它是一个有点哈克。

我有SQL Server Express(2008 R2)。所以当从模型生成数据库时,我连接到它并让它在那里建立一个数据库。然后我去C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA。 10_50部分是因为版本,可能会因您而异。所以在这个文件夹中有一个.mdf文件,就像数据库 - .mdf一样。还有一个_log.ldf文件。我将它们复制到我的项目的App_Data文件夹中。

这样做很有效,但对于模型中的每个更改都生成一个新的.mdf数据库非常耗时。所以我在发货前就这样做。

如果您发现更好的答案,请分享。

+0

这不会是一个有用的解决方案,因为大多数开发人员习惯于在其项目文件夹中创建mdf文件,而不是在程序文件中。 – Zeeshan 2013-07-15 09:44:54

5

我遇到了同样的问题,这是什么对我有用。

当我选择“从模型生成数据库...”时,我创建了一个新的MDF文件。此过程正常工作,Visual Studio生成所需的SQL脚本。但是,我不知道如何连接到相同的MDF文件来运行脚本。

原来很简单。

  1. 用鼠标右键单击该脚本,选择连接>连接

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

  3. 点击选项按钮

  4. 的路径点击附加连接参数标签

  5. 粘贴到你的数据库文件中使用以下内容作为指南:

    AttachDBFilename = C:\路径\至\数据库\ LocalData.mdf;数据库= LocalData;

  6. 点击连接按钮

如果您仍然有连接也可能是因为已经有一个打开的连接的麻烦。检查服务器资源管理器,如果连接已打开,请右键单击并选择关闭连接。

只要SQL脚本保持连接状态,该过程也会创建一个持久连接。您将希望关闭脚本或选择右键单击>连接>断开连接。

更多信息可以在这个问题上找到: EF4 Generate Database

+0

'database = LocalData;'必须替换为什么? – Shimmy 2011-11-20 07:11:48

+0

我无法明确回答这个问题。我不认为它真的很重要的数据库名称,但对我来说,我总是会使它与MDF文件名匹配,而不用扩展名。 – jedatu 2011-12-01 04:27:49

+0

谢谢,这也对我有用。 – Michael 2012-04-08 17:46:50

0

我遇到同样的问题,使用EF5在mvc4模式第一种方法。我所做的是创建项目,添加一个新模型,在edmx图上添加实体和关联。右键单击图表并选择'从模型生成数据库'。这会生成sql文件。

现在添加一个MDF文件,比方说,Database1.mdf在Solution Explorer中的App_Data文件夹(添加>新项目>数据> SQL Server数据库)。

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

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

现在,在选项中,单击附加连接参数标签和粘贴MDF文件的属性复制连接字符串。

这对我来说非常合适,而且非常合乎逻辑。没有必要直接使用SQL Server安装目录。

0

伟大的答案以上,但我不得不这样做在VS2013几个步骤,但我没有与帮助在这里解决如下。

  1. 我从现有密度纤维板
  2. 右键单击的创建ADO.NET型号 - >生成模型
  3. 数据库
  4. 右键单击Solution Explorer中密度纤维板和开放
  5. 在属性窗格中复制连接字符串到剪贴板
  6. 在由ADO Model创建的SQLQuery窗口中单击更改连接
  7. 在新的连接到服务器窗口 - >其他连接参数 - >从剪贴板粘贴连接字符串
  8. 在服务器资源管理器右键单击数据库 - >新建查询
  9. 复制和生成的脚本粘贴从ADO查询到新的查询窗口
  10. 更改使用[yourdatabase.mdf]以使用[longPath]其中longPath是非常顶部的下拉列表中列出了长路径。最简单的方法是开始键入并按CTRL-SPACE。
  11. 运行查询
  12. 保存longPath是因为您可以将它粘贴到由ADO生成的任何新查询的USE []中。

我希望这可以帮助别人 - 编码快乐!

+1

自从我原来的问题和答案已经过去几年了,但我后来发现LINQPad可以处理'.mdf'文件。看看这个:http://stackoverflow.com/questions/4824005/can-linqpad-connect-to-an-mdf-file – gligoran 2016-01-23 08:58:26