EF4生成数据库

时间:2010-05-06 01:55:52

标签: .net sql-server entity-framework ef-model-first

我正在努力寻找创建基本“模型优先”实体框架示例的最简单方法。但是,我正在努力实际生成数据库,特别是针对数据库运行SQL。

工具

  • Visual Studio 2010
  • SQL Server 2008 Express

过程

  1. 创建新的课程项目
  2. 将名为“Database1.mdf”的新服务器数据库项目(mdf)添加到项目中
  3. 添加空的ADO.net实体模型
  4. 创建一个简单的实体(Person:Id,Name)
  5. 生成脚本,选择visual studio为我创建的Database1连接
  6. 右键单击脚本编辑器,然后选择“执行SQL ...”选项
  7. 登录SQLEXPRESS
  8. 这就是说它无法找到数据库名称“Database1”。

    “问题”是SQL服务器没有连接Database1。我100%肯定Visual Studio在创建新数据库时将数据库附加到SQLExpress(步骤2)。这似乎不再是这种情况(即使是VS2010的测试版也是如此)。有人能证实吗?或告诉我如何实现这一目标?

    有没有办法可以修改TSQL脚本以使用未附加的数据库。即文件。

    我知道我可以使用SQL Management Studio或sqlcmd来附加数据库,但我希望避免使用解决方案,因为我希望看到使用visual studio的最干净的方法。

    理想解决方案(按照最优先的顺序)

    1. 获取visual studio以附加新创建的数据库
    2. 修改生成的SQL以指向文件
    3. 提前致谢。

4 个答案:

答案 0 :(得分:2)

我发现一直工作的方法(至少在VS 2010和SQL Server(2008 | 2008 R2)Express中)是:

  1. 创建ADO.NET实体模型
  2. 创建.mdf数据库,但不要向其添加任何表格
  3. 从服务器资源管理器复制连接字符串 - >修改连接 - >高级(底行)
  4. 关闭服务器资源管理器中的连接
  5. 通过“从模型生成数据库”
  6. 生成SQL脚本
  7. 在编辑器中打开SQL脚本时,单击“连接”,然后选择选项 - >其他连接参数,并在此处粘贴连接字符串。我还在连接字符串的末尾添加了“;Database=DATABASENAME;”。
  8. 执行SQL
  9. 断开并重新启动Visual Studio
  10. 现在,在展开.mdf文件的树控件后,表格应该可以在服务器资源管理器中使用。
  11. 可能并非所有步骤都是必需的(特别是不按照上面显示的确切顺序),因为我没有真正优化过程 - 如果它有效,请不要修复它。 :-)一个关键步骤似乎是#8,即重新启动Visual Studio,因为否则Server Explorer无法重新打开数据库。

答案 1 :(得分:1)

感谢HighTechRider,为服务器资源管理器中的DataConnection创建的连接字符串确实具有“AttachDBFilename”参数。

但是这个想法让我尝试别的东西。

按照上面列出的相同步骤,我在登录sqlexpress步骤时做了一些不同的事情。这一次,在Connect to Database Engine屏幕中,我点击了显示更多选项按钮,然后转到“其他连接参数”选项卡。

在这里我添加了AttachDBFilename=c:\src\mydatabasehome\Database1.mdf;database=Database1;。注意我使用的是完整路径,而不是AttachDbFilename=|DataDirectory|\Database1.mdf

然后在没有问题的情况下对数据库执行了我的SQL。

然后我回到服务器资源管理器并继续扩展我的数据库连接,以便我可以看到我的新表,但是连接失败了。经过一段时间的放屁之后,无论出于何种原因我都解决了这个问题,当我使用“连接到数据库引擎”屏幕连接到SQLExpress实例时,我在AttachDBFilename中指定的数据库文件实际上建立了永久连接。因此,先前的连接字符串(使用AttachDBFilename参数)不再有效,因为此数据库已经附加。

所以我删除了那个连接并直接创建了一个新连接到SQLServer,其中有一个名为“database1”的数据库供我选择。

现在我认为一切都很顺利。

这是一个奇怪的过程,对我来说当然是意料之外的,所以如果有人想解释发生了什么,我一定会很感激。现在我有办法(即使有点奇怪)做我想做的事,更好的解决方案赞赏。

希望这有助于某人。

答案 2 :(得分:0)

你的连接字符串是什么样的?您是否尝试在连接字符串中添加AttachDbFilename

答案 3 :(得分:0)

“附加连接参数”选项卡在哪里?我只有“高级”选项卡,并且不清楚添加附件声明的位置。