gpt4 book ai didi

nhibernate - NHibernate 可以使用的只读集合属性

转载 作者:行者123 更新时间:2023-12-04 01:43:13 27 4
gpt4 key购买 nike

我的域类具有如下所示的集合:

private List<Foo> _foos = new List<Foo>();
public virtual ReadOnlyCollection<Foo> Foos { get { return _foos.AsReadOnly(); } }

这给了我可以从类中修改的只读集合(即通过使用字段 _foos)。

该集合映射如下(Fluent NHibernate):
HasMany(x => x.Foos).KeyColumn("ParentClassId").Cascade.All().Inverse().Access.CamelCaseField(Prefix.Underscore);

现在,当我尝试使用这个集合时,我得到:

无法转换类型为“NHibernate.Collection.Generic.PersistentGenericBag 1[Foo]' to type 'System.Collections.Generic.List”的对象1 [Foo]'。

根据 Unable to cast object of type NHibernate.Collection.Generic.PersistentGenericBag to List ,这是因为集合需要作为接口(interface)暴露给 NHibernate,以便 NHibernate 可以注入(inject)它自己的集合类之一。

文章建议改用 IList,但遗憾的是,这个接口(interface)不包含 AsReadOnly() 方法,打乱了我只向外界公开只读集合的​​计划。

谁能建议我可以使用什么界面,满足相同要求的不同方法,或者不涉及这么多挫折的替代职业?

谢谢

大卫

最佳答案

您的回答是一个很好的解决方案,但我只是将集合公开为 IEnumerable<T> .这种方法存在很小的风险,因为这些可以转换回 IList。这是否是可接受的风险取决于应用程序。

关于nhibernate - NHibernate 可以使用的只读集合属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3352841/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com