Je développe un site Web avec ASP.NET MVC, NHibernate et Fluent NHibernate et je veux savoir comment personnaliser ma carte pour obtenir des enregistrements en utilisant une méthode personnalisée.Comment mapper ma classe pour obtenir les enregistrements de DB avec une méthode personnalisée?
Mes entités:
public class ImageGallery {
public virtual int Id { get; set; }
public virtual string Titulo { get; set; }
public virtual IList<Image> Images { get; set; }
public virtual bool IsActive { get; set; }
}
public class Image {
public virtual int Id { get; set; }
public virtual ImageGallery ImageGallery { get; set; }
public virtual string Low { get; set; }
public virtual bool IsActive { get; set; }
}
Mon Courant NHibernate Maps:
public class ImageGalleryMap:ClassMap<ImageGallery> {
public ImageGalleryMap() {
Id(x => x.Id);
Map(x => x.Titulo);
HasMany(x => x.Images)
.KeyColumn("ImageGalleryID");
Map(x => x.IsActive);
}
}
public class ImageMap:ClassMap<Image> {
public ImageMap() {
Id(x => x.Id);
References(x => x.ImageGallery);
Map(x => x.Low);
Map(x => x.IsActive);
}
}
Et une méthode sur ma classe ImageRepository:
public IList<Image> ListActive() {
return this.Session.CreateCriteria<Image>()
.Add(Restrictions.Eq("IsActive", true))
.List<Image>();
}
Si je crée un objet de cette façon:
ImageGallery ig = new ImageGallery();
Je peux accéder à ma liste de l'image en utilisant:
foreach(Image img in ig.Images) {
...
}
Cependant, ig.Images me donnent accès à tous les dossiers d'images et je voudrais accéder seulement des documents actifs (ou un autre critère), en utilisant listactive() Les méthodes du référentiel.
Comment puis-je le spécifier sur ma carte?
Merci beaucoup!
Merci! Cela m'a beaucoup aidé. – MCardinale