我的对象中存在以下情况
public virtual Item CurrentItem
{
get
{
return (from n in Items
where n.IsCorrente
select n).FirstOrDefault();
}
}
private IList<Item > _Items;
public virtual IList<Item> Items
{
get { return _Items; }
}
当我尝试查询currentItem属性时,我有“无法解析属性”异常
什么是最好的解决方案?
我需要在hbm映射文件中映射规则“where n.Iscorrente”?有一个简单的get {}属性???
或者我必须更改查询模式以包含集合?
我正在使用Nhibernate 3.1,这是一个愚蠢的样本,但问题是一个真正的问题。
真实应用中的Item对象是一个复杂的对象,而Items集合是数据的storical情况。
我已将私人收藏放入我使用的自动播放器,我必须映射
<bag name="Items" cascade="save-update" access="field.camelcase-underscore"
让一个属性从嵌套集合中呈现单个对象的最佳解决方案是什么?
像Person-&gt; jobs-&gt; currentjob等等
TIA
安德烈
答案 0 :(得分:0)
如果您只是想阅读CurrentItem并且不想保留它,那么您可以使用您的财产的公式。
<property name="CurrentItem" type="Example.Item, Example" formula="(SELECT * FROM Items WHERE IsCorrente = 'y')" />
这种方法的唯一方法是你必须让Item实现IUserType接口。
答案 1 :(得分:0)
我在这里看到两个选项,你根本不会映射CurrentItem并使用
1:
public virtual Item CurrentItem
{
get { return Items.FirstOrDefault(item => item.IsCurrente); }
}
public virtual IList<Item> Items { get; private set; }
2: 一点点解决方法
public virtual Item CurrentItem
{
get { return Items.FirstOrDefault(); }
}
protected virtual IList<Item> CurrentItems { get; private set; }
希望有所帮助