【发布时间】:2011-01-24 22:54:30
【问题描述】:
我最近从 Fluent NHibernate 1.0 迁移到了 Fluent NHibernate 1.1,并且迁移发生了一些重大变化。
例如,领域模型中的字段
public virtual string CustomerType
{
get { return /*computed value based on _Type which is a column in database */; }
}
public virtual string MemberType
{
get { return _Type; }
set { _Type = value; }
}
过去可以在不指定任何配置/约定的情况下正常工作。现在它会抛出一个错误,指出“找不到设置器”。我看到的解决方案是创建一个成员变量,例如 customerType 或 _customerType 或为此放入受保护的 setter。
请注意,CustomerType 依赖于从数据库中检索到的另一个值。
我还看到了像 http://support.fluentnhibernate.org/discussions/help/269-fluentnhibernate-11-automapper-doesnt-accept-read-only-properties-anymore 这样的替代方案,其中 DefaultAutoMappingConfiguration 被覆盖,例如
public override bool ShouldMap(Member member)
{
if (member.IsProperty && !member.CanWrite)
{
return false;
}
return base.ShouldMap(member);
}
但这意味着在映射中完全跳过了具有私有或受保护设置器的其他字段。
我正在寻找一种解决方案,即 Fluent NHibernate 在未指定时不寻找 setter,而是映射私有/受保护的 setter。
关于如何进行此操作的任何指示?
【问题讨论】:
标签: c# nhibernate fluent-nhibernate fluent