我刚刚开始一个非常大的网络项目,并且真的试图把所有事情都做好。
到目前为止我使用的工具是
- ASP.NET MVC 3
- 实体框架 4.3
- 忍者3
一切进展顺利,但我发现 Entity Framework CodeFirst 的一些事情有点粗略。
例如,我必须使用http://codefirstmembership.codeplex.com/来设置会员信息作为代码优先设置的一部分。不得不使用第三方的东西感觉有点麻烦。显然我应该是 1337 足以“自己动手”,但我不想从一开始就咬太多。运行 aspnet_regsql 感觉很糟糕,每次更新数据库都会迷失方向。无论如何,都可以使用上面的库,这还不错。然而,脚手架似乎已经坏了。
现在除此之外,现在看来,当我在实时环境中运行时,这些东西会变得很有问题。无论如何,我想要在 dev db 和 live db 之间进行的任何架构更改都必须使用脚本手动管理,所以在这一点上,我不会首先失去代码的意义吗?
去年我一直在使用 Google App Engine,希望代码首先以同样的方式工作?即,进行更改,然后他们会修改实时数据。现在我假设,由于没有在应用引擎中进行严重的重构,它基本上不会损害生产中的任何东西。因此,您永远无法使用 AppEngine 重命名表。它总是会创建一个新表,并留下旧表。您将不得不手动移植数据。
所以我现在在想。为什么不先去数据库呢?我已经使用 linq2sql 3 年了,并且非常喜欢先使用 db。虽然 TBH 我的数据库源代码控制策略有点......缺乏。所以我希望代码优先能够强制改善这种情况,但它实际上让我觉得我应该首先使用 DB,并且严格控制它。
我真的很感激对这种情况有任何想法,而且,这与使用 Nhibinate 相比如何?