问题描述
如果在NH文档中,请提前道歉-我在那儿找不到。
在我看来,NH不允许抽象的计算持久属性,如:
public abstract class Client
{
public int Id { get; set; }
public string _Name { get; set; }
public abstract string Name { get; }
}
public class Personal: Client
{
public static Expression<Func<Personal,string>> NameExpression = client => $"SSN {client._Name}";
public override string Name => NameExpression.Compile()(this);
}
public class Corporate: Client
{
public static Expression<Func<Corporate,string>> NameExpression = client => $"Tax Id {client._Name}";
public override string Name => NameExpression.Compile()(this);
}
(而且我意识到这是一个愚蠢的示例,我可以得到我想要的,而无需在SQL查询中计算出这些字符串。假设我有一个 real 例子,太乱了或专有权在此处列出。)
问题似乎是,当尝试在DefaultLinqToHqlGeneratorsRegistry.RegisterGenerator
中注册第二个密码时,它被认为已经在registeredProperties
词典中,因为密钥是一个MemberInfo
基本类属性,两者相同。
现在,我还不足以认为这是一个很大的限制,但是如果我能够绕开它,或者是新版本的NH来解除它,对我来说仍然很方便。
欢迎提出任何建议。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)