【问题标题】:Generate DB - no execute SQL option?生成数据库 - 没有执行 SQL 选项?
【发布时间】:2011-04-24 11:24:02
【问题描述】:

我一直在尝试遵循一些关于如何在 MVC 中使用模型优先方法创建数据库的教程。我已经在设计器中创建实体并尝试从模型生成数据库。它可以很好地创建 SQL 文件,但我似乎无法执行它?我没有办法这样做吗?当我右键单击文件时,执行选项不可用,当我打开文件并在上下文中右键单击时,该选项不可用。我尝试连接到一个空白数据库,然后使用模型实体在该数据库上创建实体模型,然后尝试从模型生成数据库,但仍然无法从 VS2010 express 中执行 sql。 有没有它不存在的原因?

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

【问题讨论】:

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


    【解决方案1】:

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

    在我看来,模型优先比代码优先要酷得多,但前提是像我这样的初学者在最终调整数据模型和重新生成数据库时能够轻松地重新播种数据。我见过的唯一例子是代码优先。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 感谢您的回答,我在某处读到的一个好处是,首先使用代码时不需要伙伴课程?但是在 Model first 和 Db first 因为这些类是自动生成的,所以可能必须使用伙伴类来添加更多属性,而且任何数据注释都必须在伙伴类中完成,这有点糟糕,因为额外的克隆类会使代码加倍。无论如何,看起来我还是会使用代码优先的方法,因为我无法通过模型实体 SQl 文件生成数据库,除非有人能告诉我为什么我没有执行 sql 选项:(
      • 是的,确实如此。您可以轻松地先在代码中注释您的类,而不会使它们成为局部的。但这个具体方面在我看来不是问题。它可能会创建更多文件,但它对于新的 MvcScaffolding 等新东西非常有用。我正在从脚手架创建我的应用程序的基本结构,我不想在控制器等中重新创建我的特殊方法,所以我可以为此使用部分,然后你可以使用脚手架重新创建/覆盖控制器而不会造成很大损失。这只是一个例子..它再次取决于情况,但做partials并不是一件坏事。
      • 谢谢dampe,您知道或有任何示例场景,其中使用模型优先而不是代码优先,反之亦然?还有知道为什么我不能执行生成的 SQl 文件吗?
      • 嗯.. 模型优先与代码优先基本上是一样的,但对于喜欢以视觉方式设计模型而不是硬编码的人来说。这两者之间可能没有任何其他因素。这真的是你的喜好问题。你必须把它作为可能的解决方案..然后你选择你喜欢的那个。广告您的第一个问题:我不太了解您到底想做什么。而且我最近除了代码之外没有其他任何东西,所以可能对此无能为力。
      • 感谢您的帮助,我将尝试先发布关于模型的第一个问题并在新线程下执行生成的 sql 文件。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      相关资源
      最近更新 更多