Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何映射我的类以获得db';是否使用自定义方法删除记录?_C#_Asp.net_Asp.net Mvc_Nhibernate_Fluent Nhibernate - Fatal编程技术网

C# 如何映射我的类以获得db';是否使用自定义方法删除记录?

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

我正在用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; }
}
我可以通过以下方式访问图像列表:

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()) {
   ...
}