使用流畅的NHibernate映射只读的sql视图

时间:2012-01-25 17:32:48

标签: c# .net nhibernate fluent-nhibernate fluent-nhibernate-mapping

我正在尝试将Fluent Nhibernate转换为Automap只读视图,这些视图没有指定主键或复合键。似乎有可能,因为ClassMap的API文档公开了Id()的默认构造函数。

http://fluentnhibernate.org/api/FluentNHibernate.Mapping/ClassMap%601.htm

它说

IdentityPart Id() 创建在域对象或数据库中的列中没有相应属性的Id。这主要用于只读访问和/或视图。默认为带有“增量”生成器的int标识。

我试图覆盖与我的视图对应的实体的映射,并删除了指定Id字段名称的主键约定。它为视图上的查询添加了id列,因为没有这样的列而失败。

我正试图摆脱我的观点上的假主键,因为我认为应该有更好的方法来做到这一点。

以下是我正在使用的覆盖代码段

public class PersonMap: IAutoMappingOverride<Person>
{
    public void Override(AutoMapping<Person> mapping)
    {
        mapping.Id();
    }
}

为什么这不起作用?

1 个答案:

答案 0 :(得分:1)

解决这个问题的方法通常是将任意属性分配为id,并将其分配。这与做Map基本相同。

public class ItemViewMap : IAutoMappingOverride<ItemView>
{
    public void Override(AutoMapping<ItemView> mapping)
    {
        mapping.Id(x => x.Column).GeneratedBy.Assigned();
    }
}