0

当我在我的呼吸代码上运行测试时,会删除并创建表,并添加新数据以用于测试

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

然而,它正在执行参照完整性,在生产中这会很好,但在测试中我要求不要启用它。

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

4

1 回答 1

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"
}
于 2013-02-15T07:32:08.220 回答