.net Active Record ORM具有完全迁移支持

时间:2009-09-30 23:10:33

标签: c# .net sql orm

我正在寻找使用Active Record模式的.net OR / M,并允许开发人员定义将在代码中更新数据库方案的迁移。我在http://www.castleproject.org/activerecord/index.html看到了ActiveRecord - 但它的文档记录很差(有非常过时的样本)并且没有可用的生产就绪版本。我的目标DBMS是MSSQLE 2008;但最好生成的SQL与MSSQL 2000兼容。

我宁愿不使用nHibernate,因为据我所知,它需要一个XML文件来维护该方案,并且不支持迁移。使用.net反射和属性,库在这种情况下使用XML是不可接受的,并且对于平台的一般用途感觉不太原生。

我主要担心的是维护databsae方案。由于这是针对ASP.NET MVC项目的,因此必须能够使数据库方案在环境之间保持同步。考虑到.net的普及,我无法找到具有内置迁移支持的单个OR / M的事实令人惊讶 - 就像我之前所说的那样,自定义属性和反射使代码中很容易实现。

能够在我的实体类之外定义没有外部配置文件(ala ADO.NET Entity Framework)的实体也是我想要避免的。 OR / M无法通过在关联属性上使用自定义属性来推断列名称。

无论如何,有什么建议吗?我所要求的可能是不存在的;如果有的话,是否有使用其他.net OR / Ms的第一手资料可以分享?

2 个答案:

答案 0 :(得分:4)

  

我宁愿不使用nHibernate,因为   据我所知,它需要一个XML文件   维持计划

您是否查看了Fluent-NHibernate,它允许您使用流畅的.net API定义模型。

网站示例:

public class CatMap : ClassMap<Cat>
{
  public CatMap()
  {
    Id(x => x.Id);
    Map(x => x.Name)
      .Length(16)
      .Not.Nullable();
    Map(x => x.Sex);
    References(x => x.Mate);
    HasMany(x => x.Kittens);
  }
}

(Fluent-NHibernate也支持auto-mappings,基于约定)

NHibernate也支持Schema Creation and Updating。 Schema Creation是一种享受,我以前在Web项目和内存单元测试中使用了很多次。还没有使用更新功能,因为我已经使用Migrator.NET一段时间来处理这个问题。

答案 1 :(得分:0)

SubSonic(已删除链接)提供Migration support,效果非常好。