C# 只读属性的Fluent NHibernate映射
我最近从1.0迁移到Fluent NHibernate 1.1,迁移过程中有一些突破性的变化 例如,域模型中的字段C# 只读属性的Fluent NHibernate映射,c#,nhibernate,fluent-nhibernate,fluent,C#,Nhibernate,Fluent Nhibernate,Fluent,我最近从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 {
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; }
}
用于在不指定任何配置/约定的情况下正常工作。现在它抛出一个错误,声明“找不到setter”。我看到的解决方案是,创建一个成员变量,如customerType或_customerType,或者为此放入一个受保护的setter
请注意,CustomerType依赖于从数据库检索到的另一个值
我也看到了其他选择,比如在哪里
将覆盖DefaultAutoMappingConfiguration,例如
public override bool ShouldMap(Member member)
{
if (member.IsProperty && !member.CanWrite)
{
return false;
}
return base.ShouldMap(member);
}
但这意味着在映射中会完全跳过具有私有或受保护setter的其他字段
我正在寻找一种解决方案,Fluent NHibernate在未指定setter时不查找setter,而是映射私有/受保护的setter
有关于如何进行此操作的说明吗?CustomerValue是否作为派生值从数据库中出来
如果它没有删除虚拟对象并将其排除在映射中。如果这是唯一的映射或少数中断的映射之一,则手动忽略它/使用无setter映射对其进行映射。否则,按照您列出的建议关闭映射不可写属性,并映射任何异常。我不确定你还能做什么,除了自己分岔代码和解决问题 更新
我刚刚运行了一个测试,
PropertyInfo.CanWrite
为受保护和私有setter返回true。因此,我不确定您发布的解决方案是否存在问题。是的。它是从数据库中的列派生的值。我也更新了这个问题。