我正在開發一個ASP.NET MVC,NHibernate和Fluent NHibernate的網站,並且想知道如何自定義我的地圖以使用自定義方法獲取記錄。如何映射我的類以便使用自定義方法獲取數據庫的記錄?
我的實體:
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; }
}
我流利的NHibernate的地圖:
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);
}
}
而且,在我的ImageRepository類中的方法:
public IList<Image> ListActive() {
return this.Session.CreateCriteria<Image>()
.Add(Restrictions.Eq("IsActive", true))
.List<Image>();
}
如果我創建一個對象是這樣的:
ImageGallery ig = new ImageGallery();
我可以用我的訪問將Image的列表:
foreach(Image img in ig.Images) {
...
}
然而,ig.Images給我訪問所有的圖像記錄,我想訪問只是活動記錄(或其他標準),使用ListActive()存儲庫方法。
如何在我的地圖上指定此項?
非常感謝!
謝謝!這幫助了我很多。 – MCardinale 2010-04-14 20:57:27