2013-02-14 71 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" 
}