在查询具有子POCO属性对象的对象时,我似乎遇到错误:
could not resolve property: PreferredLanguage.Name of: AcademyData.Entities.StudentsInformation
我的查询:
Session.QueryOver<StudentsInformation>().Where(x => x.Active == 1 && x.PreferredLanguage.Name == firstName).List()
如果我删除x.PreferredLanguage.Name条件,它可以工作,我看到对象的正确Name值,但它不允许我将它用作查询。我做错了什么?
这是我的映射:
References(x => x.PreferredLanguage).Column("PreferredLanguageID");
此外,我将POCO和映射分成两个单独的程序集,如果这有任何区别的话。我配置映射所以:
.Mappings(x => x.FluentMappings.AddFromAssemblyOf<AcademyData.Dummy>().AddFromAssemblyOf<data.core.Dummy>())
忽略假人,用它来测试一些东西。
编辑:我使用同一个程序集中的实体对其进行了测试,问题仍然存在。 编辑:return SessionManager.Session.QueryOver<StudentsInformation>().JoinQueryOver<PersonBase>(s => s.Person).Where(p => p.FirstName == firstName).List();
这是否是正确的方法,或者我是否仍然可以在没有JoinQueryOver的情况下为其他表执行此操作?
答案 0 :(得分:0)
如果您希望通过该子实体进行查询,则必须加入子实体。这是正确的做法。如果您愿意,也可以使用JoinAlias
。
答案 1 :(得分:0)
或者,您可以使用LINQ而不是QueryOver:
return Session.Query<StudentsInformation>()
.Where(x => x.Active == 1 && x.PreferredLanguage.Name == firstName)
.ToList()