我刚刚开始一个非常大的 web 项目,并且真的想把每件事都做好。
到目前为止我使用的工具是
- ASP.NET MVC 3
- Entity Framework 4.3
- 注入(inject) 3
一切顺利,但我发现 Entity Framework CodeFirst 的一些事情有点粗略。
例如,我必须使用 http://codefirstmembership.codeplex.com/将成员(member)信息设置为代码优先设置的一部分。不得不使用第三方的东西感觉有点麻烦。显然我应该是 1337 足以“自己动手”,但我不想一开始就吃太多。运行 aspnet_regsql 感觉很糟糕,每次数据库更新都会迷失方向。无论如何,让这一切都与上面的图书馆一起工作,这还不错。然而,脚手架似乎已经坏了。
除此之外,现在看来,当我在实时环境中运行时,这些东西将变得有说服力。无论如何,我想要在开发数据库和实时数据库之间进行的任何架构更改都必须使用脚本手动管理,所以在这一点上我不会首先失去代码的意义吗?
去年我一直在使用 Google App Engine,并且希望代码优先能够以同样的方式工作?即,进行更改,他们会修改实时数据。现在我假设,由于没有在应用引擎中进行严格的重构,它基本上不会损害生产中的任何东西。因此,您永远无法使用 AppEngine 重命名表。它总是会创建一个新表,并保留旧表。您将不得不手动移植数据。
所以我现在在想。为什么不先去数据库呢?我已经使用 linq2sql 工作了 3 年,并且非常习惯先使用 db。尽管TBH我的数据库源代码控制策略有点......缺乏。所以我希望代码优先能够强制改善这种情况,但它实际上让我觉得我应该先使用数据库,并且严格控制它。
如果您对这种情况有任何想法,我将不胜感激,而且,这与使用 Nhibinate 相比如何?
最佳答案
您描述的升级方案正在添加到 EF-Migrations 中。它的上线版本已经可用,并且应该很快作为官方支持的发行版本可用。
checkout :http://coding.abel.nu/tag/ef-migrations/
关于c# - 如果无法安全地用于生产并且无法描述索引之类的东西,为什么我应该首先使用 Entity Framework 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10037480/