Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# (Fluent)具有计算属性的类的NHibernate映射_C#_Nhibernate_Fluent Nhibernate - Fatal编程技术网

C# (Fluent)具有计算属性的类的NHibernate映射

C# (Fluent)具有计算属性的类的NHibernate映射,c#,nhibernate,fluent-nhibernate,C#,Nhibernate,Fluent Nhibernate,我有一个类似于以下的类(注意!名称已更改以保护无辜者): 我使用Fluent NHibernate配置映射: public class PersonMap : ClassMap<Person> { public PersonMap() { Id(x => x.Id); Map(x => x.Name); Map(x => x.Birthday); } } 公共类PersonMap:Class

我有一个类似于以下的类(注意!名称已更改以保护无辜者):

我使用Fluent NHibernate配置映射:

public class PersonMap : ClassMap<Person>
{
    public PersonMap() 
    {
        Id(x => x.Id);
        Map(x => x.Name);
        Map(x => x.Birthday);
    }
}
公共类PersonMap:ClassMap
{
公众人物地图()
{
Id(x=>x.Id);
Map(x=>x.Name);
Map(x=>x.birth);
}
}
问题是这会引发异常:

找不到属性的setter “人”类中的“年龄”

如果年龄未标记为虚拟,我将获得:

以下类型不能用作 代理:人:方法获取年龄 是“公共/受保护的虚拟”或 “受保护的内部虚拟”


当然它找不到二传手,也不应该!我如何才能使这种映射工作?

我真正的问题是,为什么fluent NHibernate试图映射Age属性?它甚至不在你的地图上。在使用整个自动映射功能之前,我只使用过fluent NHibernate的早期版本,从未遇到过这个问题

我怀疑是您的约定导致它尝试映射年龄,或者您以某种方式启用了自动映射,这与您的手动映射相冲突

还要注意,Fluent NHibernate最近改变了一些惯例。因此,我将查看以下文档:


嗨,维格比,你能详细说明是什么习俗导致了这一现象吗?我也有同样的问题。这是一种约定,试图将我的列名指定为Property Name+“Id”,而不是Property Name+“\u Id”(即“PersonId”而不是“Person\u Id”),但我这样做不起作用,所以我放弃了约定,用“手”来做。
public class PersonMap : ClassMap<Person>
{
    public PersonMap() 
    {
        Id(x => x.Id);
        Map(x => x.Name);
        Map(x => x.Birthday);
    }
}