Caricamento di entità infantili multi-livello con impazienza nel problema della duplicazione della dublernate

StackOverflow https://stackoverflow.com/questions/5919756

  •  29-10-2019
  •  | 
  •  

Domanda

Ho una classe modello che contiene alcune immagini e alcune funzionalità:

public class Model
{
    public int ModelId { get; set; }
    public string ModelName { get; set; }
    public virtual IList<Feature> ModelFeatures { get; set; }
    public virtual IList<ModelImage> ModelImages { get; set; }
}

public class ModelImage
{
    public virtual int ModelImageId { get; set; }
    public virtual Model Model { get; set; }
    public virtual Resource Image { get; set; }
    public virtual int DisplayOrder { get; set; }
}

public class Feature
{
    public virtual int FeatureId { get; set; }
    public virtual string Title { get; set; }
    public virtual string Text { get; set; }
}

Ora voglio caricare ModelImages e caratteristiche di un modello con impazienza, sto usando:

item = session.CreateCriteria<Model>()
       .Add(NHibernate.Criterion.Expression.Where<Model>(o => o.ModelId == id))
       .SetFetchMode("ModelImages", NHibernate.FetchMode.Eager)
       .SetFetchMode("ModelImages.Image", NHibernate.FetchMode.Eager)
       .SetFetchMode("ModelFeatures", NHibernate.FetchMode.Eager)
       .SetResultTransformer(NHibernate.Transform.Transformers.DistinctRootEntity)
       .UniqueResult<Model>();

Ma il risultato contiene modelimage duplicati e modelfeature, come potrei applicare un trasformatore di risultati come Distinctroot a queste collezioni per bambini?

Grazie

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top