常见的Entity Framework混淆问题

3
我遇到了一些问题,希望你能帮我解决。我非常陌生(这是我在这些语言中的第一个项目)于MS MVC 2和Entity Framework 4.0。我使用Model First方法和图形设计师绘制了一个模型。我还没有为它设置SQL数据库,并且认为它只是脱机工作,但是可能我忘记了某个地方指定连接字符串。所以,我开始运行MVC组件,并使用EF新创建的类型。我试图使用存储库模式和Ninject进行依赖注入。因此,在实际数据存储之前,我花费了很多时间。这就引出了我的问题:现在我需要考虑实际数据存储的问题。
我认为它是连接到一个.mdf文件并从一个SQLExpress实例运行,但是我找不到任何支持它的东西。由于我没有安装SSMS,所以我无法正确检查。最终,我安装好了它,并没有发现数据库。所以现在我不确定它是否真正连通。我决定重新开始一下。我生成了模型的SQL脚本,并在SSMS中创建了一个新的数据库来运行该脚本。运行脚本后一切都很好。然后我进入VS并运行Database First场景。因此,模型现在显示所有表格,并将某些字段错误地指定为关键字。我纠正了这一点,现在我又回到了第一个困扰我的问题。
我有一个User表,其中包含应该是Guid的userId字段,但在原始建模中我忘记了它,它是一个varchar字段。我无法修复它下面的映射以将底层(不确定实际术语)字段更改为Guid。我更改了模型的类型,但没有更新数据库。这基本上使我处于奇怪的位置。我相信EF应该在我的不介入下管理SQL,但如果这是真的,我如何推动这样的更改?我必须每次需要更改模式时都删除整个数据库吗?
抱歉,如果这是最新的问题,但我正在努力解决所有这些问题,真的需要一些帮助。我上次使用的语言集是具有ADO.Net类型数据集的ASP.Net 2.0。如果我切换到Code First方法,是否会更好?如果我这样做,我是否需要重新开始管理SQL?
1个回答

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


感谢你的提醒。我有一个独立的类库来存储数据访问层(DAL),在你提到之后,我查看了它的App.config文件以找到数据源。今天进一步阅读中,我发现我将不得不在某个时候从Web项目中获取该连接字符串到数据访问层(DAL),但那应该很容易。很遗憾,我正在使用Web Dev 2010 Express,无法利用这种Power Pack。我还没有到理解你所提到的工作流程的地步,但这很快就会出现在我的清单上!感谢你的提醒! - SenseiHitokiri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接