C# NHibernate将属性映射到行的存在
我有以下实体和Fluent 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 :
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"/>