【问题标题】:How to tell Fluent NHibernate not to map a class property如何告诉 Fluent NHibernate 不要映射类属性
【发布时间】:2010-10-28 19:10:45
【问题描述】:

我有一个在 fluent nhibernate 中映射的类,但我希望映射忽略其中一个类属性。

下面的类和映射出现此错误:

以下类型不能用作代理: iMasterengine.Data.Model.Calendar:方法 get_HasEvents 应该是虚拟的

//my class
public class Calendar : IEntity {
    public virtual int Id { get; private set; }
    public virtual string Name { get; set; }
    public virtual string SiteId { get; set; }
    public virtual IList<CalendarEvent> Events { get; set; }
    //ignore this property
    public bool HasEvents { get { return Events.Count > 0; } }
}

//my mapping
public class CalendarMap : ClassMap<Calendar> {
    public CalendarMap() {
        Id(x => x.Id);
        Map(x => x.Name);
        Map(x => x.SiteId);
        HasMany(x => x.Events).Inverse();
        //what do I put here to tell nhibernate
        //to ignore my HasEvents property?
    }
}

【问题讨论】:

    标签: c# nhibernate fluent-nhibernate


    【解决方案1】:

    你可以在课堂上把HasEvents虚拟

    public virtual bool HasEvents { get { return Events.Count > 0; } }
    

    您无需向映射添加任何内容。

    如果您使用自动映射,您只需要告诉 fluent 导入属性,我认为您不是。

    【讨论】:

    • 在旧版本的 NHibernat.e 上通过 Linq 对我不起作用
    【解决方案2】:
    map.IgnoreProperty(p => p.What);
    

    【讨论】:

    • 该行应该放在哪里?我想它会进入 CalendarMap 构造函数,但我没有看到那里有可用的地图实例。
    • 它应该添加到您创建配置的位置。看到这个链接http://wiki.fluentnhibernate.org/Auto_mapping#Ignoring_properties
    • IgnoreProperty() 仅适用于 automapping 如果您自己指定映射(即使用类映射),那么这无关紧要。海报中包含了一个类图,并没有说任何关于自动映射的内容,所以我看不出这有什么相关性。
    • 我是从 google 发现的,我正在自动映射,所以即使它可能无法回答问题,它也回答了我的问题
    • 我能否改变每个用户的基本方式,我想让它对一组用户可用并为一组用户隐藏。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-10
    • 2012-02-18
    • 2011-08-31
    相关资源
    最近更新 更多