我需要坚持使用功能NHibernate数据库这个类:映射支持字段,将距相应的属性不同的类型,使用功能NHibernate
public class RaccoonCity
{
public virtual int Id { get; private set; }
public virtual DateTime InfectionStart { get; private set; }
private IList<Zombie> _zombies = new List<Zombie>();
public virtual IEnumerable<Zombie> Zombies
{
get { return _zombies; }
}
protected RaccoonCity()
{}
public RaccoonCity(DateTime startMonth)
{
InfectionStart = startMonth;
}
public virtual void AddZombie(Zombie z)
{
_zombies.Add(z);
}
}
酒店有IEnumerable类型,以表明你不该不使用它来插入新项目。后台字段是IList,可以很容易地从自己的类中插入新项目。
僵尸是一个简单的类:
public class Zombie
{
public virtual int Id { get; private set; }
public virtual string FormerName { get; set; }
public virtual DateTime Infected { get; set; }
}
的地图如下:
public class RaccoonCityMap: ClassMap<RaccoonCity>
{
public RaccoonCityMap()
{
Id(x => x.Id);
Map(x => x.InfectionStart);
HasMany(x => x.Zombies)
.Access.CamelCaseField(Prefix.Underscore)
.Inverse()
.Cascade.All();
}
}
当我测试,数据插入数据库,但zombie's外键空,并且RaccoonCity实例在僵尸列表上没有任何项目。
谢谢! “倒置”对我来说不是很清楚。我认为负责坚持自己的班级本身就是班级。而“逆向”将这种责任放在其他职业肩上... – Seiti 2010-07-19 03:21:03
正是。我同意命名不是最直观的,但它的根源在于原始的Java Hibernate。 – 2010-07-19 14:10:04