C# NHibernate将属性映射到行的存在

C# NHibernate将属性映射到行的存在,c#,nhibernate,fluent-nhibernate,C#,Nhibernate,Fluent Nhibernate,我有以下实体和Fluent NHibernate映射: public class Advertiser { public virtual int AdvertiserId { get; set; } public virtual string AdvertiserName { get; set; } public virtual bool IsPriorityEntity { get; set; } } public class AdvertiserMapping :

我有以下实体和Fluent NHibernate映射:

public class Advertiser
{
    public virtual int AdvertiserId { get; set; }
    public virtual string AdvertiserName { get; set; }
    public virtual bool IsPriorityEntity { get; set; }
}

public class AdvertiserMapping : ClassMap<Advertiser>
{
    public AdvertiserMapping()
    {
        Id(a => a.AdvertiserId).GeneratedBy.Identity();
        Map(a => a.AdvertiserName);
    }
}

我不知道如何映射这样的东西。

您可以使其面向对象并映射整个内容:

public class Advertiser
{
    public virtual int AdvertiserId { get; set; }
    public virtual string AdvertiserName { get; set; }
    public virtual bool IsPriorityEntity { get { return Priority != null; } }
    public PriorityEntity Priority { get; set; }
}
编写自定义sql以加载整个实体或单个属性:

(对不起,我不使用fluent,这是xml映射)


您不能在此处直接更新属性。您可能还可以编写自定义sql来更新和插入,但我认为这将变得复杂

public class Advertiser
{
    public virtual int AdvertiserId { get; set; }
    public virtual string AdvertiserName { get; set; }
    public virtual bool IsPriorityEntity { get { return Priority != null; } }
    public PriorityEntity Priority { get; set; }
}
<property 
  name="IsPriorityEntity" 
  formula="Select CASE WHEN count(pe.PriorityEntityID) = 0 THEN 0 ELSE 1 END From PriorityEntity pe WHERE pe.PriorityEntityID = AdvertiserID"/>