ArgumentOutOfRangeException : Index était hors de gamme

Je reçois ce bizarre ArgumentOutOfRangeException chaque fois que j'utilise le
PersitenceSpecification classe pour la vérification d'une entité qui a une
référence à un objet de valeur.

    public class CatalogItem : DomainEntity
{
internal virtual Manufacturer Manufacturer { get; private
set; }
internal virtual String Name { get; private set; }
protected CatalogItem()
{}
public CatalogItem(String name, String manufacturer)
{
Name = name;
Manufacturer = new Manufacturer(manufacturer);
}
}
public class CatalogItemMapping : ClassMap<CatalogItem>
{
public CatalogItemMapping()
{
Id(catalogItem => catalogItem.Id);
Component<Manufacturer>(category => category.Manufacturer,
m => m.Map(manufacturer =>
manufacturer.Name));
Map(catalogItem => catalogItem.Name);
Map(Reveal.Property<CatalogItem>("Price"));
}
}
[TestFixture]
public class When_verifying_the_class_mapping_of_a_catalog_item
: NHibernateSpecification
{
[Test]
public void Then_a_catalog_object_should_be_persistable()
{
new PersistenceSpecification<CatalogItem>(Session)
.VerifyTheMappings();
}
}
[TestFixture]
public class NHibernateSpecification
: Specification
{
protected ISession Session { get; private set; }
protected override void Establish_context()
{
var configuration = new SQLiteConfiguration()
.InMemory()
.ShowSql()
.ToProperties();
var sessionSource = new SessionSource(configuration, new
RetailerPersistenceModel());
Session = sessionSource.CreateSession();
sessionSource.BuildSchema(Session);
ProvideInitialData(Session);
Session.Flush();
Session.Clear();
}
protected override void Dispose_context()
{
Session.Dispose();
Session = null;
}
protected virtual void ProvideInitialData(ISession session)
{}
}

Voici l'erreur que je reçois:

Cas de test
'Then_a_catalog_object_should_be_persistable' n'est pas exécuté:
Système.ArgumentOutOfRangeException :
Index était hors de portée. Doit être
non-négative et inférieure à la taille de
la collecte. Nom du paramètre: index
au Système.ThrowHelper.ThrowArgumentOutOfRangeException
(ExceptionArgument argument,
ExceptionResource de ressources)
au Système.ThrowHelper.ThrowArgumentOutOfRangeException()
au Système.Les Collections.Génériques.Liste1.get_Item(Int32
index)
at System.Data.SQLite.SQLiteParameterCollection.GetParameter(Int32
index)
at System.Data.Common.DbParameterCollection.System.Collections.IList.get_Item
(Int32 index)
at NHibernate.Type.GuidType.Set(IDbCommand
cmd, Object value, Int32 index)
at NHibernate.Type.NullableType.NullSafeSet(IDbCommand
cmd, Object value, Int32 index)
at NHibernate.Type.NullableType.NullSafeSet(IDbCommand
st, Object value, Int32 index,
ISessionImplementor session)
at NHibernate.Persister.Entity.AbstractEntityPersister.Dehydrate
(Object id, Object[] fields, Object
rowId, Boolean[] includeProperty,
Boolean[][] includeColumns, Int32
table, IDbCommand statement,
ISessionImplementor session, Int32
index)
at NHibernate.Persister.Entity.AbstractEntityPersister.Insert(Object
id, Object[] fields, Boolean[]
notNull, Int32 j, SqlCommandInfo sql,
Object obj, ISessionImplementor
session)
at NHibernate.Persister.Entity.AbstractEntityPersister.Insert(Object
id, Object[] fields, Object obj,
ISessionImplementor session)
at NHibernate.Action.EntityInsertAction.Execute()
at NHibernate.Engine.ActionQueue.Execute(IExecutable
executable)
at NHibernate.Engine.ActionQueue.ExecuteActions(IList
list)
at NHibernate.Engine.ActionQueue.ExecuteActions()
at NHibernate.Event.Default.AbstractFlushingEventListener.PerformExecutions
(IEventSource session)
at NHibernate.Event.Default.DefaultFlushEventListener.OnFlush
(FlushEvent event)
at NHibernate.Impl.SessionImpl.Flush()
at NHibernate.Transaction.AdoTransaction.Commit()
d:\Builds\FluentNH\src\FluentNHibernate\Testing
\PersistenceSpecification.cs(127,0):
at
FluentNHibernate.Testing.PersistenceSpecification
1.TransactionalSave
(Objet propertyValue)
d:\Builds\FluentNH\src\FluentNHibernate\Test
\PersistenceSpecification.cs(105,0):
au
FluentNHibernate.Les tests.PersistenceSpecification`1.VerifyTheMappings
()
C:\Source\SupplyChain\Tests\Détaillant.IntegrationTests\Mappages
\CatalogItemMappingSpecifications.cs(14,0):
au
SupplyChain.Le détaillant.IntegrationTests.Les mappages.When_verifying_the_class_mapping_of_a_catalog_item.Then_a_catalog_object_should_be_persistable
()

Désolé pour le long post, mais celui-ci m'a occupé pendant un couple de
heures maintenant. Cela pourrait ne pas être causée par la FNH que j'ai trouvé ce ticket JIRA
de NH lui-même qui parle de quelque chose de similaire:

http://forum.hibernate.org/viewtopic.php?p=2395409

J'espère toujours que je suis en train de faire quelque chose qui cloche dans mon code :-). Tout
la pensée?

Merci d'avance

InformationsquelleAutor user12867 | 2009-03-01