定义默认映射类

时间:2016-05-17 13:29:26

标签: c# fluent-nhibernate

我有一个实体类,例如

public class Title{
   public virtual int Id { get; set; }
   public virtual string Isin { get; set; }
   public virtual string Note { get; set; }
   public virtual string Description { get; set; }
}

两个流畅的hibernate映射类,每个类都有一个entity-name属性:

public class ViewTitleMap:ClassMap<Title>{
    public ViewTitleMap(){
         EntityName("ViewTitle");
         Schema("consolidated");
         Table("vTitles");
         LazyLoad();
         Id(_ => _.Id).GeneratedBy.Identity();
         Map(_ =>     _.Description).Length(10).Nullable().CustomType("AnsiString");
         Map(_ => _.Isin).Length(12).Not.Nullable();
         Map(_ => _.Note).Length(12).Nullable();
     }
}

public class TitleMap:ClassMap<Title>
    {
        public TitleMap()
        {
            EntityName("title");
            Schema("dbo");
            Table("Title");
            LazyLoad();
            Id(_ => _.Id).GeneratedBy.Identity().Column("Id");
            Map(_ => _.Description).Column("Description").Length(10).Nullable();
            Map(_ => _.Isin).Length(12).Column("Isin").Not.Nullable();
            Map(_ => _.Note).Column("Note").Length(12).Nullable();
        } 
}

是否可以定义“默认”映射(例如具有实体名称“title”的映射类),因此当我查询时,我不需要编写我想要使用的实体名称(反之,只在必要时放置实体名称?

E.g。 (以实体名称“title”作为默认映射映射类的前提)我不想每次都写这个

Title title = session.QueryOver<Title>("title").Where(_ =>_.Id == titleId).SingleOrDefault();

但仅

Title title = session.QueryOver<Title>.Where(_ =>_.Id == titleId).SingleOrDefault();

虽然我想用这个

Title title = session.QueryOver<Title>("ViewTitle").Where(_ =>_.Id == titleId).SingleOrDefault(); 

仅在特定情况下。这是因为“标题”实体的突出用法 - 映射“ViewTitle”

谢谢

0 个答案:

没有答案