我刚刚开始使用 LINQ to Entities 在 ASP.Net MVC 中启动一个项目,我想知道是否有一种很好、干净的方法来定义模型,为我在数据库中创建适当的表。我最熟悉 Django(就 MVC 框架而言)并且正在寻找 .Net 等效项 models.py 这样我就可以对所有内容进行版本控制。有任何想法吗?如果它有某种形式的模式迁移、django-evolution 等,那就更好了。

有帮助吗?

解决方案

我认为你想做的就是扭转这个问题。实体可以从数据库自动生成,因此问题只是使用 .NET 机制来维护数据库架构。由于您没有使用 NHibernate,而这些其他解决方案需要使用 NHibernate,因此我建议使用 迁移点网. 。MigratorDotNet 使用与 Ruby on Rails 迁移完全相同的想法:

  1. 您的数据库会跟踪其版本
  2. 每次您希望更改架构时,您都需要编写一个小类来处理升级(以及可选的降级)
  3. 为这些类分配执行顺序
  4. 如果数据库不是最新的,只需按顺序执行类的升级方法即可

由于您只会在编译时重新生成实体,因此我建议运行迁移脚本,然后重新生成实体,作为构建过程的一部分。MigratorDotNet 已附带 MSBuildTarget, ,添加它只需点击几下。

其他提示

另一种选择是使用NHibernate的与 FluentNhibernate ,把模型基于约定的自动地图。您还可以覆盖映射调整它为您的需求。

城堡项目的活动记录是这样做的一个很好的方法。

如果类似于Ruby on Rails的报价功能活动记录。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top