Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.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
NHibernate左外连接子类_Nhibernate_Subclass_Outer Join - Fatal编程技术网

NHibernate左外连接子类

NHibernate左外连接子类,nhibernate,subclass,outer-join,Nhibernate,Subclass,Outer Join,我有两个实体的产品和图像。并非所有图像都是产品图像,图像是文件的子类,下面是我的实体。我需要找到所有与产品无关的图像。我不熟悉实体检索,并尝试过许多方法。任何想法或链接将不胜感激 public class File { #region Feilds public virtual int Id { get; set; } public virtual string Name { get; set; } public virtu

我有两个实体的产品和图像。并非所有图像都是产品图像,图像是文件的子类,下面是我的实体。我需要找到所有与产品无关的图像。我不熟悉实体检索,并尝试过许多方法。任何想法或链接将不胜感激

public class File
    {
        #region Feilds
        public virtual int Id { get; set; }
        public virtual string Name { get; set; }
        public virtual Enumerations.File.FileType Type { get; set; }
        public virtual string Extension { get; set; }
        public virtual string Path { get; set; }
        public virtual DateTime DateCreated { get; set; }
        public virtual DateTime DateModified { get; set; }
        #endregion
    }

public class Image : File
{
    #region Fields
    public virtual string ImageName { get; set; }
    public virtual string Description { get; set; }
    public virtual bool Active { get; set; }
    public virtual DateTime DateTaken { get; set; }
    #endregion
}

public class Product
{
    #region Properties
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
    public virtual string Description { get; set; }
    public virtual decimal Price { get; set; }
    public virtual decimal Weight { get; set; }
    public virtual bool IsDigital { get; set; }
    public virtual DateTime DateCreated { get; set; }
    public virtual IList<Category> ProductCategories { get; set; }
    public virtual IList<ProductAttribute> ProductAttributes { get; set; }
    public virtual IList<Image> ProductImages { get; set; }
    #endregion
}
公共类文件
{
#区域场
公共虚拟整数Id{get;set;}
公共虚拟字符串名称{get;set;}
公共虚拟枚举.File.FileType类型{get;set;}
公共虚拟字符串扩展名{get;set;}
公共虚拟字符串路径{get;set;}
公共虚拟日期时间DateCreated{get;set;}
公共虚拟日期时间日期修改{get;set;}
#端区
}
公共类映像:文件
{
#区域字段
公共虚拟字符串ImageName{get;set;}
公共虚拟字符串描述{get;set;}
公共虚拟布尔活动{get;set;}
公共虚拟日期时间DateTake{get;set;}
#端区
}
公共类产品
{
#区域属性
公共虚拟整数Id{get;set;}
公共虚拟字符串名称{get;set;}
公共虚拟字符串描述{get;set;}
公共虚拟十进制价格{get;set;}
公共虚拟十进制权重{get;set;}
公共虚拟bool是数字{get;set;}
公共虚拟日期时间DateCreated{get;set;}
公共虚拟IList ProductCategories{get;set;}
公共虚拟IList ProductAttributes{get;set;}
公共虚拟IList ProductImages{get;set;}
#端区
}

您可以使用Critiria not exists子查询

IList<Image> images = session.CreateCriteria<Image>("img")
        .Add(Expression.Not(Subqueries.Exists(DetachedCriteria.For<ProductImageLink>("pil")
                    .SetProjection(Projections.Constant(1))
                    .Add(Expression.EqProperty("img.image_id", "pil.image_id")))))
        .List<Image>();

这就像一个魔咒,必须将它重构为:IList images=session.CreateCriteria(typeof(APP.File.Image),“img”).Add(Expression.Not(subquerys.Exists)(DetachedCriteria.For(“pi”).setProjections(Projections.Constant(1)).Add(Expression.EqProperty(“img.Id”),"pi.Image"(()()).List();还有,对于Fluent NHibernate标准,什么是好的资源/文档?哦,是的,我忘了最后的列表。我不确定Fluent,我只进入常规休眠状态一个月。我认为Fluent是为了克服hbm.xml映射文件。+1你再次得到了一个接受的答案,没有经过表决。我仍然认为应该自动完成,但我显然是唯一的一个,所以我会继续投票0票被接受的答案,因为我发现了他们。:)
select ... from image img where not exists(select 1 from productimagelink pil where img.image_id = pil.image_id);