C# NHibernate是否从类生成映射?

C# NHibernate是否从类生成映射?,c#,.net,nhibernate,C#,.net,Nhibernate,有没有办法从POCO生成NHibernate的映射?这使得NHibernate看起来非常有趣。然而,我有很多这样的课程 public class register_email_job { public PK id; public user_data user; } public class user_comment : BaseComment2 { [IsNullable] public user_comment parent; public user_

有没有办法从POCO生成NHibernate的映射?这使得NHibernate看起来非常有趣。然而,我有很多这样的课程

public class register_email_job
{
    public PK id;
    public user_data user;
}

public class user_comment : BaseComment2
{
    [IsNullable]
    public user_comment parent;
    public user_data user;
}
我想很容易地把它翻译成与NHibernate兼容的东西。我不介意修改一些查询,但我不想重写每个类来使用属性,也不想修改类,因为我需要改变它在任何地方的使用方式


-编辑-请注意,我使用继承,并且user\u comment有一个对象到user\u comment(因此它必须为null。因此它不会无限递归。null是根)。

您可能想看看Fluent NHibernate的自动映射功能:

以便NHibernate为您的实体类构造代理,您需要使非私有成员成为虚拟成员。公共字段不适用于代理对象,这些对象应转换为属性

public class register_email_job
{
    public virtual PK id { get; set; }
    public virtual user_data user { get; set; }
}
能够从类创建映射。它可以基于约定,也可以自己编写

您的实体和表可能与默认值不匹配,有几种方法可以替代它们

使用classmap,您的映射可能如下所示:

public class register_email_job_map : ClassMap<register_email_job>
{
    public register_email_job_map()
    {
        Id( x => x.Id );
        References( x=> x.user );
    }
}

public class user_comment_map : ClassMap<user_comment>
{
    public register_email_job_map()
    {
        // properties from BaseComment2
        References( x=> x.user );
        References( x=> x.parent );
    }
}
public class register\u email\u job\u map:ClassMap
{
公共注册\电子邮件\工作\地图()
{
Id(x=>x.Id);
参考文献(x=>x.user);
}
}
公共类用户\u注释\u映射:类映射
{
公共注册\电子邮件\工作\地图()
{
//BaseComment2中的属性
参考文献(x=>x.user);
参考文献(x=>x.parent);
}
}

呃,这看起来需要大量的工作。有几十门课。都很简单。也许我应该使用现有的反射代码,并将其调整为输出映射。但是,这个问题应该继续下去。