gpt4 book ai didi

.net - 一般 Entity Framework 困惑

转载 作者:行者123 更新时间:2023-12-02 21:15:46 25 4
gpt4 key购买 nike

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

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

我有一个 User 表,其中有一个 userId 字段,该字段应该是 Guid,但在原始建模过程中我错过了它,它是一个 varchar 字段。我无法修复其下方的映射以将底层(不确定其实际术语)字段更改为 Guid。我更改了模型的类型,但没有更新数据库。这基本上让我处于一个奇怪的境地。我相信我应该允许 EF 在没有我参与的情况下为我管理 SQL,但如果这是真的,我如何才能插入这样的更改。每次需要更改架构时,我是否只能删除整个数据库?

抱歉,如果这是菜鸟问题中最菜鸟的问题,但我正在尝试解决所有这些问题,并且确实可以使用一些输入。我使用的最后一个语言集是带有 ADO.Net 类型数据集的 ASP.Net 2.0。我是否最好切换到“代码优先”方法?如果我要这样做,我是否必须再次开始自己管理 SQL?

我相信这是我的第一个问题,所以,如果我违反了任何规定,我深表歉意;我想我已经很清楚了。

最佳答案

嗯 - 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 及更高版本中使用服务器资源管理器。

关于.net - 一般 Entity Framework 困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5708520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com