流利的Nhibernate问题

时间:2011-08-18 14:51:57

标签: nhibernate fluent-nhibernate

我的实体中有这个:

public virtual Iesi.Collections.Generic.ISet<long> Blas { get; set; }

这是我的映射:

mapping.HasMany(x => x.Blas).AsSet().Element("Value", m => m.Type<long>()); 

这会创建相关的表格,我会添加如下数据:

X.Blas = new Iesi.Collections.Generic.HashedSet<long>();
X.Blas.Add(some_long);

这会为对象添加值,但Blas中的值永远不会保留(X的所有其他内容都是)。

任何人都可以看到任何错误吗?

感谢。

基督教

3 个答案:

答案 0 :(得分:2)

如果通过会话加载X,则使用更改跟踪集合初始化blas。所以不要覆盖它。请尝试使用X.Blas.Clear();代替X.Blas = new Iesi.Collections.Generic.HashedSet<long>();

答案 1 :(得分:1)

尝试添加级联设置。

mapping.HasMany(x => x.Blas).AsSet()
       .Element("Value", m => m.Type<long>())
       .Cascade.AllDeleteOrphan();

此外,您应该只能使用ICollection和常规Hashset而不是Iesi。如果您至少使用版本3(它可能也适用于2.1.2或更高版本)

答案 2 :(得分:0)

你应该遵循适当的面向对象的封装来避免这样的问题,这是我在帖子中的一个例子:How do I map a collection accessed through a read only property?