2009-04-11 60 views
0

我有一个与下面的配置FluentNHibernate的hasMany不填充集合

HasMany(x => x.Staff) 
     .Inverse() 
     .Cascade.All(); 

一对多的关系,但我得到一个集合初始化失败的错误。

我不得不在这里指定外键,我发现的例子不?

它如何知道哪个是外键?

编辑:仔细看看sql试图使用的例外字段Staff_id 当我说它是StaffID?

马尔科姆

回答

5

尝试

HasMany(x => x.Staff) 
    .KeyColumnNames.Add("StaffID") 
    .Inverse() 
    .Cascade.All(); 

Staff_id是自动配置默认情况下,尽管你可以设置什么约定自动配置使用。

如果您将集合映射到IList <T>,您需要添加AsBag()或NHibernate会抱怨缺少“idx”列。如果你想延迟加载集合添加.LazyLoad()。我通常会和.Cascade.AllDeleteOrphan()一起去。