Jon*_*son 8 nhibernate fluent-nhibernate
我有以下Person和Gender类(我不是真的,但是示例已经简化以获得我的观点),使用NHibernate(Fluent NHibernate)我想将数据库列" GenderId"[INT]值映射到受保护的int _genderId字段中我的Person班级.我该怎么做呢?
仅供参考,映射和域对象位于单独的程序集中.
public class Person : Entity
{
protected int _genderId;
public virtual int Id { get; private set; }
public virtual string Name { get; private set; }
public virtual Gender Gender
{
get { return Gender.FromId(_genderId); }
}
}
public class Gender : EnumerationBase<Gender>
{
public static Gender Male
= new Gender(1, "Male");
public static Gender Female
= new Gender(2, "Female");
private static readonly Gender[] _genders
= new[] { Male, Female };
private Gender(int id, string name)
{
Id = id;
Name = name;
}
public int Id { get; private set; }
public string Name { get; private set; }
public static Gender FromId(int id)
{
return _genders.Where(x => x.Id == id).SingleOrDefault();
}
}
Run Code Online (Sandbox Code Playgroud)
R0M*_*RMY 15
正如dotjoe所说,我认为你需要将它暴露为受保护的财产.然后你可以使用Reveal映射来实现它.
您的类/映射可能看起来像是一些东西
public class Person : Entity
{
protected int genderId{ get; set; }
}
public PersonMap : ClassMap<Person>
{
public PersonMap()
{
Map(Reveal.Member<Person>("genderId"))
}
}
Run Code Online (Sandbox Code Playgroud)
只需将其设为受保护的财产即可。NH反射不需要公共财产。
protected virtual int _genderId { get; set; }
然后像这样映射(抱歉从来没有抽出时间来流畅)......
<property name="_genderId" column="genderId" />
此外,仅映射枚举可能会更容易。您可以将该列存储为枚举值或文本。有很多这样的例子。
| 归档时间: |
|
| 查看次数: |
6840 次 |
| 最近记录: |