J'ai un composant sur une entité qui peut être nulle. Cela fonctionne dans un test unitaire avec une base de données InMemory, mais ne fonctionne pas sur une base de données SQLite basée sur un fichier. J'utilise un indicateur booléen pour indiquer si le composant a été défini, mais cela semble être un hack.Composant Fluid Nhibernate & SQLite mapping
Est-ce un NHibernate ou un bogue SQLite? Ou ai-je oublié quelque chose?
Voici mes correspondances dépouillées de valeur commerciale:
public sealed class EntityMap : ClassMap<Entity>
{
public EntityMap()
{
Not.LazyLoad();
Id(m => m.Uid);
Map(m => m.HasComponent).Not.Nullable();
Component(m => m.Component).ColumnPrefix("Component");
}
}
public sealed class MyComponentMap : ComponentMap<MyComponent>
{
public MyComponentMap()
{
Map(c => c.SomeBasicProperty).Nullable();
HasMany(c => c.ListOfValues).AsList(li => li.Column("Number"))
.Component(part =>
{
part.Map(s => s.Name);
part.Map(s => s.Value);
}
.Table("ComponentValues")
.Cascade.AllDeleteOrphan().Not.LazyLoad();
}
}
Avec la base de données de la mémoire du composant sur l'entité est nulle lorsque toutes les colonnes pour elle sont nulles. C'est ce que je m'attends. Lors de l'utilisation d'une base de données basée sur des fichiers, le composant est vide. Donc, je ne peux pas utiliser entity.Component==null
pour vérifier si le composant a déjà été défini.
pouvez-vous poster le test unitaire pour voir ce que vous attendez et ce que vous obtenez. – Firo
Je vais y voir. Le problème est que le test d'unité fonctionne, mais seulement si vous utilisez la base de données de sqlite. – sanosdole
quel est le résultat quand cela fonctionne: le composant est nul, pas nul? que se passe-t-il si ça ne marche pas: le composant est nul, pas nul, exception? – Firo