当我在我的呼吸代码上运行测试时,会删除并创建表,并添加新数据以用于测试
new SchemaExport(_configuration).Execute(false, true, false);
然而,它正在执行参照完整性,在生产中这会很好,但在测试中我要求不要启用它。
使用上面的代码创建表时,有什么方法可以禁用它们?
当我在我的呼吸代码上运行测试时,会删除并创建表,并添加新数据以用于测试
new SchemaExport(_configuration).Execute(false, true, false);
然而,它正在执行参照完整性,在生产中这会很好,但在测试中我要求不要启用它。
使用上面的代码创建表时,有什么方法可以禁用它们?
使用 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"
}