Considérons que nous avons une application qui utilise Fluent NHibernate pour accéder à certaines bases de données (nous ne savons pas exactement de quel type de DB il s'agira). Et considérons que nous voulons cartographier une classe qui a un identifiant de type non signé (par exemple ulong):Comment puis-je récupérer une instance Dialect dans le mappage NHibernate Fluent
public class MyClass
{
public ulong id { get; set; }
//Other stuff
...
}
Nous avons aussi une coutume IUserType
que ulong cartes comme un certain type pris en charge par DB (tant par exemple). Appelons le ULongAsLong
.
Mon but est d'écrire une cartographie MyClass
de sorte que son id
serait mis en correspondance comme si unsigned bigint
DB prend en charge les types non signés et que ULongAsLong
si elle ne fonctionne pas. Quelque chose comme ceci:
public class MyClassMap : ClassMap<MyClass>
{
public MyClassMap()
{
//Here goes some function or something that retrieves a Dialect instance.
var dialect = ...;
if (supportsULong(dialect))
{
Id(x => x.id);
}
else
{
Id(x => x.id).CustomType<ULongAsLong>();
}
//Mapping everything else
...
}
private bool supportsULong(Dialect dialect)
{
//Some code that finds out if ulong is supported by DB.
}
}
La question est de savoir comment puis-je récupérer une instance Dialect
dans la cartographie pour prendre une décision de mapper un id
comme ulong ou comme ULongAsLong.
Bien sûr, je peux obtenir un '' Dialect' exemple de ISessionImplementor'. Mais la question était de savoir comment en obtenir un dans ma cartographie FNH. Je n'ai trouvé aucun moyen d'obtenir 'ISessionImplementor' là. – rodya