我创建了这种级联保存数据的关系。问题在于加载数据:NHibernate为每行生成一个单独的选择,这需要很长时间。
从我的映射中删除HasOne可以快速加载数据,但是保存存在错误。 知道如何解决吗?提供程序,等效数据库和使用的映射的示例:
获取数据:
public IList<Parent> GetAll()
{
var session = SessionFactory.Create();
var daos = session.Query<ParentDao>().Fetch(x => x.Child).ToList(); // I need to fetch this
return daos;
}
数据库表:
parents: {Id, Name, child_id}
children: {Id, Name}
地图:
public class ParentDaoMap : ClassMap<ParentDao>{
public ParentDaoMap(){
Table("parents");
Id(x => x.Id);
Map(x => x.Name);
References(x => x.ChildDao, "child_id").Cascade.All();
}}
public class ChildDaoMap : ClassMap<ChildDao>{
public ChildDaoMap(){
Table("children");
Id(x => x.Id);
Map(x => x.Name);
HasOne(x => x.ParentDao).PropertyRef(x => x.ChildDao); //This one causes long getting
}}