所以我有一个类似这个问题的设置: Parent Child Setup
保存父母和子女时,一切都很有效。
但是,我在选择孩子时似乎有问题。我似乎无法让所有的孩子都有一个特定的父母。
这失败了:NHibernate.QueryException:无法解析属性:ParentEntity_id:Test.Data.ChildEntity
这是我的代码:
public IEnumerable<ChildEntity> GetByParent(ParentEntity parent)
{
using (ISession session = OrmHelper.OpenSession())
{
return session.CreateCriteria<ChildEntity>().Add(Restrictions.Eq("ParentEntity_id ", parent.Id)).List<ChildEntity>();
}
}
任何有助于建立适当功能以获取所有物品的帮助都将受到赞赏。
哦,我正在使用Fluent NHibernate来构建映射 - 版本1 RTM和NHibernate 2.1.2 GA
如果您需要更多信息,请与我们联系。
根据您的要求,我的流利映射:
public ParentEntityMap()
{
Id(x => x.Id);
Map(x => x.Name);
Map(x => x.Code).UniqueKey("ukCode");
HasMany(x => x.ChildEntity).LazyLoad()
.Inverse().Cascade.SaveUpdate();
}
public ChildEntityMap()
{
Id(x => x.Id);
Map(x => x.Amount);
Map(x => x.LogTime);
References(x => x.ParentEntity);
}
映射到以下2个表:
CREATE TABLE "ParentEntity" (
Id integer,
Name TEXT,
Code TEXT,
primary key (Id),
unique (Code)
)
CREATE TABLE "ChildEntity" (
Id integer,
Amount NUMERIC,
LogTime DATETIME,
ParentEntity_id INTEGER,
primary key (Id)
)
SQLite中的数据存储。
答案 0 :(得分:1)
return session.CreateCriteria<ChildEntity>()
.Add(Restrictions.Eq("ParentEntity", parent))
.List<ChildEntity>();
只需使用父母本身。
答案 1 :(得分:0)
在您的标准中,您不应该引用列名,而是引用属性名。将“ParentEntity_id”更改为“ParentEntity.Id”,这应解决它。