2013-02-14 68 views
0

当我跑我的呼吸代码测试表被丢弃,创建新的数据添加使用的SchemaExport和关闭参照完整性约束

new SchemaExport(_configuration).Execute(false, true, false);

测试然而它被实施参照完整性,在生产这将是罚款,但在测试中,我要求这不会。

当用上面的代码创建表时,有什么办法可以禁用它们吗?

回答

1

使用FluentNHibernate是刚刚加入这个约定使用普通NHibernate的测试只

public class NoForeignKeys : IReferenceConvention, IHasManyConvention 
{ 
    public void Apply(IManyToOneInstance instance) 
    { 
     instance.ForeignKey("none"); 
    } 

    public void Apply(IOneToManyCollectionInstance instance) 
    { 
     instance.Key.ForeignKey("none"); 
    } 
} 

你需要通过所有映射类的属性进行迭代,并改变它。

foreach (var prop in config.ClassMappings.SelectMany(c => c.PropertyClosureIterator).Where(p => p.IsEntityRelation || <is hasmany>)) 
{ 
    // set foreignkey name to "none" 
}