一般实体框架混乱

时间:2011-04-18 20:29:49

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

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

我认为它附加到.mdf文件并在SQLExpress实例上运行,但我找不到任何支持它的东西。我没有安装SSMS,所以我无法弄清楚如何正确检查。最终得到了并运行,没有数据库。所以现在我很困惑这个实际连线的地方,如果有的话。我觉得它太奇怪了,想要重新开始。我为Model生成了SQL脚本,并在SSMS中创建了一个新的db来运行脚​​本。运行脚本,一切都很好。然后我进入VS并运行Database First场景。因此,模型现在显示了我的所有表格,并通过将它们指定为不应该存在的键来有效地搞砸了几个字段。修正了这一点,现在我又回到了解决让我感到沮丧的问题。

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

很抱歉,如果这是noob问题的noobest,但我试图找出所有这些东西,并真的可以使用一些输入。我使用的最后一个语言集是带有ADO.Net类型数据集的ASP.Net 2.0。我最好切换到Code First方法吗?如果我这样做,我必须再次开始自己管理SQL吗?

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

1 个答案:

答案 0 :(得分:1)

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

  • 您必须拥有VS 2010 Premium或Ultimate,因为它使用这些版本的数据库功能。
  • 并非每次对模型的更改都可以逐步处理。任何可能导致数据丢失的事情都将以例外情况结束。我希望将string修改为Guid时就是这种情况。在这种情况下,解决方案是手动修改DB或删除它并从头开始重新创建。

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

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

相关问题