【问题标题】:General Entity Framework confusion一般实体框架混淆
【发布时间】:2011-04-18 20:29:48
【问题描述】:

所以我遇到了一些事情,想知道你是否可以帮助我。我对 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?

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

【问题讨论】:

    标签: .net entity-framework entity-framework-4 ef-code-first ef-model-first


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 感谢您的提醒。我有一个单独的类库,其中包含 DAL,在您提到它以查找数据源后,我在 App.config 中查找了它。我在今天的进一步阅读中发现,我必须在某个时候从 Web 项目中获取到 DAL 的连接字符串,但这应该很容易。对我来说不幸的是,我使用的是 Web Dev 2010 Express,所以我无法利用该电源组。我还没有理解你提到的工作流程,但这显然很快就会出现在我的名单上!感谢您的提醒!
    猜你喜欢
    • 1970-01-01
    • 2014-11-27
    • 1970-01-01
    • 2011-09-07
    • 2021-12-14
    • 2022-09-23
    • 2021-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多