3

所以我遇到了一些事情,想知道你是否可以帮助我。我对 MS MVC 2 和 Entity Framework 4.0 非常陌生(这是我使用这些语言的第一个项目)。我使用模型优先方法和图形设计器绘制了一个模型。我还没有它的 SQL 数据库,我认为它只是在断开连接的情况下工作,但也许我只是忘记了我在某处指定了一个连接字符串。因此,我开始使用 EF 中新创建的类型来启动和运行 MVC 组件。我正在尝试使用存储库模式以及 Ninject 进行依赖注入。所以在我不得不担心实际的数据存储之前,我有很多时间。这让我想到了我的问题:我现在就在那个时候。

我认为它附加到一个 .mdf 文件并在 SQLExpress 实例上运行它,但我真的找不到任何支持它的东西。我没有安装 SSMS,所以我不知道如何正确检查。最终启动并运行,没有分贝。所以现在我很困惑这实际上是在哪里连接的,如果有的话。我认为这太奇怪了,想重新开始。我为模型生成了 SQL 脚本,并在 SSMS 中创建了一个新的数据库来运行该脚本。运行脚本,一切正常。然后我进入 VS 并运行 Database First 场景。因此,模型现在显示了我所有的表,并通过将它们指定为不应该的键来有效地搞砸了一些字段。解决了这个问题,现在我又回到了最初让我感到沮丧的问题上。

我有一个用户表,其中有一个应该是 Guid 的 userId 字段,但在最初的建模过程中我错过了它,它是一个 varchar 字段。我无法修复它下面的映射以将底层(不确定它的实际术语)字段更改为 Guid。我更改了模型的类型,但没有更新数据库。这基本上使我处于一个奇怪的位置。我相信我应该允许 EF 在没有我参与的情况下为我管理 SQL,但如果这是真的,我怎么能推动这样的改变。每次我需要更改架构时,我是否仅限于删除整个数据库?

抱歉,如果这是菜鸟问题中最菜的问题,但我正试图弄清楚所有这些东西,并且真的可以使用一些输入。我使用的最后一个语言集是带有 ADO.Net 类型数据集的 ASP.Net 2.0。我是否最好切换到 Code First 方法?如果我要这样做,我是否必须自己重新开始管理 SQL?

我相信这是我在这里的第一个问题,如果我违反了任何内容,我深表歉意;我想我很清楚。

4

1 回答 1

1

好吧 - EF 将连接字符串存储在 Web.config 文件中。您怀疑 EF 在首先使用模型时会促使您删除数据库并创建一个新数据库是部分正确的。好消息是,整个过程是由可以修改或替换的工作流驱动的。你不必自己做。您可以下载Entity Designer Database Generation Power Pack,其中包含几个新的工作流程和模板,允许通过模型优先方法增量构建数据库。这有两个缺点:

  • 您必须拥有 VS 2010 Premium 或 Ultimate,因为它使用这些版本的数据库功能。
  • 并非对模型的每个更改都可以增量处理。任何可能导致数据丢失的事情都会以异常告终。我希望修改stringGuid. 这种情况下的解决方案是手动修改数据库或删除它并从头开始重新创建它。

代码优先可能对您没有帮助,因为这种方法目前缺少任何数据库演变,但如果模型更改,它具有完全自动化的数据库重建过程。

顺便提一句。您不需要 SSMS 来检查数据库。SQL Server 还提供了一些工具(必须单独安装)和命令行实用程序来访问数据库 - o​​sql 或 sqlcmd。您还可以在 Visual Studio Professional 及更高版本中使用服务器资源管理器。

于 2011-04-18T20:50:44.450 回答