SchemaExport并关闭参照完整性约束

时间:2013-02-14 12:16:40

标签: nhibernate nunit schemaexport

当我在我的呼吸道代码上运行测试时,表格被删除并创建,并使用

添加新的数据用于测试

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

然而,它强制执行参照完整性,在生产中这将没有问题,但在测试中我要求不要这样做。

使用上面的代码创建表时,有没有办法禁用它们?

1 个答案:

答案 0 :(得分:1)

使用FluentNHibernate只是为了测试而添加这个约定

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

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

使用普通的NHibernate,您需要遍历所有映射的类属性并在那里进行更改。

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