生成数据库 - 没有执行SQL选项?

时间:2011-04-24 11:24:03

标签: .net entity-framework entity-framework-4.1 ef-model-first

我一直在尝试按照MVC中使用模型第一种方法创建数据库的一些教程。我已经在设计器中创建实体并尝试从模型生成数据库。它创建SQL文件很好但我似乎无法执行它?我没有选择这样做?当我右键单击该文件时,执行选项不可用,当我打开文件并右键单击上下文时,该选项不可用。我尝试连接到空白数据库,然后使用模型实体在此数据库上创建实体模型,然后尝试从模型生成数据库,但仍然无法从VS2010 express中执行sql。 有没有理由不在那里?

问题2 我喜欢使用模型第一种方法,因为我发现所有实体的图形表示及其关系易于理解,我喜欢所有C#Db访问类都是通过单击按钮创建的。然而,MVC 3的大多数示例似乎都使用代码优先方法。首先使用代码首先使用代码有什么好处?哪种方法更容易掌握?我来自DB背景,当我确实做了一些asp编码方式时,DB总是先到位:)

2 个答案:

答案 0 :(得分:1)

广告2:如何使用EF(代码优先,数据库优先,模型优先)三种可能的方式都没有什么大的好处。它们的存在是为了适应不同的场景和不同的用户 我个人在开始新项目时首先喜欢代码,因为我可以通过编写类来更快地准备我的entites。这是原型设计的好方法,但是一旦你需要创建更复杂的模型,它开始变得有点困难。您必须触摸FluentAPI并了解有关约定等的更多信息。

只需选择您更喜欢哪一个,或哪个最适合这种情况(即,如果您已准备好数据库,或者您从空白开始)。

答案 1 :(得分:1)

我观看了模型的第一个教程,我无法右键单击并执行从实体数据模型生成的sql。我在网上找到了答案。我不得不(1)从整个sql文件中删除关键字“GO”,然后(2)删除顶部显示“USE ... blah blah”的行,然后(3)右键单击数据库mdf in数据库浏览器窗口并单击“新查询”(4)用我修改过的sql代码替换新查询窗口中的“select from blah blah”。 (5)当我在新的查询窗口中右键单击时,现在我可以选择执行sql。它发出了警告,但后来说它已成功完成(并且它在所有这些之后就像在视频中一样工作)。在我找到http://www.telnet80.com/2010/09/fixing-entity-framework-model-first-sql.html

的文章中有更好的图片演练

在我看来,模型首先比代码首先更酷,但只有当像我这样的初学者最终调整数据模型并重新生成数据库时才重新播种数据。我见过的唯一例子是代码优先。