4

通过创建 MVC 4 项目并使用设计器添加单个数据实体,我在 VS 2012 中创建了一个简单的实体框架模型优先应用程序。

第一次右键单击设计器界面并选择生成数据库时,它会提示我输入数据库连接的详细信息。我告诉它使用我的 App_data 文件夹中的本地数据库文件。完成后,它创建了我的(空)数据库文件,并为我提供了一个闪亮的新 MyData.edmx.sql 文件。

好的,所以我假设我需要对我的新数据库文件执行这个 sql 文件。但我想不出这样做的魔力。当我右键单击 sql 文件并选择执行时,它告诉我我正在使用数据库引擎的服务器类型,并且它要求我输入服务器名称。唯一可用的选项似乎是 MyPC\SQLEXPRESS。但是当我选择它并单击 Connect 按钮时,它会抱怨 [MyData] 数据库不存在(因为我已经告诉它使用 SQL Express 而不是 LocalDb 与我的数据库文件)。

帮助。如何将 VS 连接到我的新数据库文件?

鲍勃

4

2 回答 2

5

我在尝试在 VS 2013,EF6 下执行 edmx.sql 时遇到了类似的问题。其他任何地方都没有提及此解决方案,因此我将在此处添加它以供任何可能遇到错误的人使用:“数据库 mynewdatabase 不存在”。以下是我的解决方案:

  1. 按照步骤完成从模型生成数据库。
  2. 打开文件 *.edmx.sql(它应该已经自动打开)。右键单击文本编辑器内的任意位置,然后选择执行。
  3. 如果这是您第一次连接到此数据库,则会弹出登录提示。如果使用 LocalDB,请完全输入服务器“(localdb)\v11.0”并使用 Windows 身份验证。

现在的问题。如果你得到一个错误:“数据库 mynewdatabase 不存在”,这里是修复:在 *.edmx.sql 的顶部附近是这样的一行:

USE [mynewdatabase];

您必须修改它以包含数据库文件名的完整路径,例如:

USE [D:\Projects\MyNewProject\MyNewProject\App_Data\mynewdatabase.mdf];

现在重复第 2 步,您应该会收到数据库已成功创建的消息。

注意1:.mdf 扩展名是必需的!

注意 2:每次从模型生成数据库时都必须再次执行此手动编辑,因为该过程会覆盖 edmx.sql。

于 2014-11-11T02:07:53.347 回答
0

在 MSDN 论坛[here]上,Allen Li(Microsoft 技术支持)对我的问题给出了很好的回答。事实证明,Visual Studio 显然无法直接针对数据库文件执行 SQL 脚本。您需要下载并安装 SQL Server Management Studio 并使用它将文件“附加”到现有 SQLEXPRESS 实例。

艾伦指给我看一个详细解释该过程的博客条目:

http://www.headcrash.us/blog/2010/11/model-first-entity-framework-with-mdf-database-files-in-app_data/

于 2012-09-18T14:57:12.710 回答