C# 如何映射我的类以获得db';是否使用自定义方法删除记录?
我正在用ASP.NET MVC、NHibernate和Fluent NHibernate开发一个网站,我想知道如何使用自定义方法自定义地图以获取记录 我的实体:C# 如何映射我的类以获得db';是否使用自定义方法删除记录?,c#,asp.net,asp.net-mvc,nhibernate,fluent-nhibernate,C#,Asp.net,Asp.net Mvc,Nhibernate,Fluent Nhibernate,我正在用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; se
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; }
}
我可以通过以下方式访问图像列表:
foreach(Image img in ig.Images) {
...
}
但是,ig.Images允许我访问所有图像记录,我只希望使用ListActive()的存储库方法访问活动记录(或其他条件)
我如何在地图上指定此项
多谢各位 映射中的Where约束将始终将图像限制为活动图像:
public class ImageMap:ClassMap<Image> {
public ImageMap() {
Id(x => x.Id);
References(x => x.ImageGallery);
Map(x => x.Low);
Map(x => x.IsActive);
Where("IsActive = 1");
}
}
我喜欢扩展方法解决方案,因为它可以用于任何IEnumerable
,而不仅仅是ImageGallery上的集合。我肯定会使用这个解决方案,除非加载非活动图像是一个可测量的性能问题
如果您只想有选择地加载活动图像,请从开始,因为我对它们没有任何经验。谢谢!这对我帮助很大。
ImageGallery ig = new ImageGallery();
foreach(Image img in ig.Images) {
...
}
public class ImageMap:ClassMap<Image> {
public ImageMap() {
Id(x => x.Id);
References(x => x.ImageGallery);
Map(x => x.Low);
Map(x => x.IsActive);
Where("IsActive = 1");
}
}
public static IEnumerable<Image> Active(this IEnumerable<Image> images)
{
return images.Where(x => x.IsActive);
}
foreach(Image img in ig.Images.Active()) {
...
}