Wie kann ich die Fetchmode setzen auf allen Verbänden eines nHibernate ICriteria in einem Rutsch?
-
21-09-2019 - |
Frage
ich ein Objekt, das viele assocations zu anderen Objekten hat. All dies sind träge durch nHibernate, geholt, die in fast allen Fällen gut.
In einem bestimmten Szenario, in diesem Fall ein Export von vielen Aufzeichnungen, möchte ich auf alle Verbände die Fetchmode zu eifrig setzen. Gibt es eine Möglichkeit, dies zu tun, ohne manuell jedes angeben, mit:
ICriteria crit = CreateCriteria().
.SetFetchMode("Address", FetchMode.Eager)
.SetFetchMode("ContactPerson", FetchMode.Eager);
Das Verfahren würde Ich mag, finden, aber nicht in der Lage zu:
// This doesn't work.
ICriteria crit = CreateCriteria().SetFetchMode(FetchMode.Eager);
Lösung
Nein, es gibt keine Möglichkeit, dies in einer Decke Art und Weise zu tun.
Andere Tipps
Sie könnten versuchen, die NHibernate Metadaten zu verwenden.
ISessionFactory sessionFactory;
Type type = typeof(MyEntity);
IClassMetadata meta = sessionFactory.GetClassMetadata(type);
foreach (string mappedPropertyName in meta.PropertyNames)
{
IType propertyType = meta.GetPropertyType(mappedPropertyName);
if (propertyType.IsAssociationType)
{
// initialize property
// recursively go through the properties of the associated entity
}
if (propertyType.IsCollectionType)
{
// initialize collection
// if it is a collection of entities,
// recursively go through the properties of the associated entity
// Use NHibernateUtil.Initialize
}
}
Ich bin mir nicht sicher, ob es ist die Mühe wert.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow