使用Fluent NHibernate映射与相应属性具有不同类型的支持字段
我需要使用Fluent NHibernate在数据库上持久化该类:使用Fluent NHibernate映射与相应属性具有不同类型的支持字段,nhibernate,fluent-nhibernate,nhibernate-mapping,Nhibernate,Fluent Nhibernate,Nhibernate Mapping,我需要使用Fluent 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 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);
}
}
地图如下:
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();
}
}
公共类浣熊地图:类地图
{
公共浣熊图()
{
Id(x=>x.Id);
Map(x=>x.InfectionStart);
HasMany(x=>x.Zombies)
.Access.CamelCaseField(前缀.下划线)
.Inverse()
.Cascade.All();
}
}
当我测试这个时,数据被插入到数据库中,但是僵尸的外键是空的,racooncity实例在僵尸列表中没有任何项目。找到了一篇关于它的帖子:
我必须实现这个方法
从那以后,我自己就有了许多组件
在汽车的后备箱里不见了
框架就是不是,
可以映射值的集合
物体。但这并不难
因为源代码库非常好。
我的更改可能会被整合
很快就进入框架
还有这个:
您将关系声明为
反向
,这意味着僵尸
而非RacoonCity
负责维护关系
要么添加对应的zombie引用并在AddZombie
方法上设置它,要么删除Inverse
(在这种情况下,您将看到一个带有空FK的插入,后面是一个更新)
建议阅读:谢谢!“反转”对我来说不是很清楚。我认为对自己负责的班级是班级本身。而“反向”则把这个责任推到了其他阶级的肩上……没错。我同意命名法不是最直观的,但它起源于最初的JavaHibernate。
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();
}
}