我正在寻找使用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的第一手资料可以分享?
答案 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,效果非常好。