有没有办法从POCO为NHibernate生成映射?这个reply to my question使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兼容的东西。我不介意修改一些查询,但我不想重写每个类来使用属性和修改类,这样我需要改变它在任何地方的使用方式。
-edit-请注意,我使用继承,user_comment有一个user_comment的对象(因此它必须是可空的。所以它不能无限递归.null是root。)
答案 0 :(得分:3)
您可能需要了解Fluent NHibernate的自动映射功能:http://wiki.fluentnhibernate.org/Auto_mapping
答案 1 :(得分:0)
为了让NHibernate为您的实体类构建代理,您需要使非私有成员成为虚拟成员。公共字段不适用于代理对象,这些字段应转换为属性。
public class register_email_job
{
public virtual PK id { get; set; }
public virtual user_data user { get; set; }
}
Fluent NHibernate能够从类创建映射。它可以automap基于约定,或者您可以编写自己的mappers。
您的实体和表格可能与默认conventions不匹配,有几种方法可以覆盖它们。
使用类映射,您的映射可能如下所示:
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 );
}
}