Domanda

When I am running tests on my Respiratory code the tables are dropped and created and fresh data is added for tests using

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

However it is enforcing referential integrity, in production this will be fine but in testing I require this to not be on.

Is there any way to disable them when creating the tables with the code above?

È stato utile?

Soluzione

using FluentNHibernate it is just adding this convention for tests only

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

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

using plain NHibernate you would need to iterate through all mapped classes properties and change it there.

foreach (var prop in config.ClassMappings.SelectMany(c => c.PropertyClosureIterator).Where(p => p.IsEntityRelation || <is hasmany>))
{
     // set foreignkey name to "none"
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top