我的实体中有这个:
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的所有其他内容都是)。
任何人都可以看到任何错误吗?
感谢。
基督教
答案 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?