C# NHibernate是否从类生成映射?
有没有办法从POCO生成NHibernate的映射?这使得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_
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);
}
}
呃,这看起来需要大量的工作。有几十门课。都很简单。也许我应该使用现有的反射代码,并将其调整为输出映射。但是,这个问题应该继续下去。