Tôi có điều này mã ASP.NET MVC3 đó là cung cấp bởi mùa xuân và thành thạo NHibernate (NHib 3.1)không thể giải quyết bất động sản: User.Full_Name của: Harrods.Core.Entities.Teacher
Tôi có lỗi này:
could not resolve property: User.Full_Name of: Harrods.Core.Entities.Teacher
[QueryException: could not resolve property: User.Full_Name of: Harrods.Core.Entities.Teacher]
NHibernate.Persister.Entity.AbstractPropertyMapping.GetColumns(String propertyName) +104
NHibernate.Persister.Entity.AbstractPropertyMapping.ToColumns(String alias, String propertyName) +57
NHibernate.Persister.Entity.BasicEntityPropertyMapping.ToColumns(String alias, String propertyName) +100
NHibernate.Persister.Entity.AbstractEntityPersister.ToColumns(String alias, String propertyName) +53
NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetColumns(ICriteria subcriteria, String propertyName) +184
NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetColumnsUsingProjection(ICriteria subcriteria, String propertyName) +134
NHibernate.Criterion.CriterionUtil.GetColumnNamesUsingPropertyName(ICriteriaQuery criteriaQuery, ICriteria criteria, String propertyName) +45
NHibernate.Criterion.CriterionUtil.GetColumnNames(String propertyName, IProjection projection, ICriteriaQuery criteriaQuery, ICriteria criteria, IDictionary`2 enabledFilters) +46
NHibernate.Criterion.InsensitiveLikeExpression.ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery, IDictionary`2 enabledFilters) +101
NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetWhereCondition(IDictionary`2 enabledFilters) +298
NHibernate.Loader.Criteria.CriteriaJoinWalker..ctor(IOuterJoinLoadable persister, CriteriaQueryTranslator translator, ISessionFactoryImplementor factory, ICriteria criteria, String rootEntityName, IDictionary`2 enabledFilters) +447
NHibernate.Loader.Criteria.CriteriaLoader..ctor(IOuterJoinLoadable persister, ISessionFactoryImplementor factory, CriteriaImpl rootCriteria, String rootEntityName, IDictionary`2 enabledFilters) +175
NHibernate.Impl.SessionImpl.List(CriteriaImpl criteria, IList results) +412
NHibernate.Impl.CriteriaImpl.List(IList results) +80
NHibernate.Impl.CriteriaImpl.List() +104
NHibernate.Criterion.QueryOver`1.List() +96
NHibernate.Criterion.QueryOver`1.NHibernate.IQueryOver<TRoot>.List() +75
Đây là mã rằng vấn đề có vẻ là đến từ:
return session.QueryOver<Teacher>()
.Where(x => x.User.Full_Name.IsInsensitiveLike("%" + Search + "%"))
.OrderBy(x => x.Id).Asc
.Skip((skip - 1) * take)
.Take(take)
.List<Teacher>();
lớp giáo viên của tôi trông như thế này:
[Serializable]
public class Teacher
{
public virtual User User { get; set; }
}
Và lớp người dùng của tôi trông giống như sau:
public class User : BaseEntity<User>
{
public virtual string Email { get; set; }
public virtual string Full_Name { get; set; }
}
Không chắc những gì đang đưa ra các vấn đề. Mọi thứ đều ổn với tôi. Bất cứ ai có bất cứ ý tưởng gì sai? :)
Không chắc nhưng họ trông hơi giống nhau, nhưng không thực sự hiểu làm thế nào để giải quyết anyway:
NHibernate.QueryException with dynamic-component A correct way to load entities by Id list when Id is not mapped
EDIT: Cố gắng này, nhưng vẫn đem lại cho các lỗi tương tự : -
return session.QueryOver<Teacher>()
.JoinQueryOver<User>(u => u.User)
.Where(x => x.Full_Name.IsInsensitiveLike("%" + FullNameSearchFilter + "%"))
.OrderBy(x => x.Id).Asc
.Skip((skip - 1) * take)
.Take(take)
.List<Teacher>();
bí danh Cố gắng cũng ..:
0.123.return session.QueryOver<Teacher>()
.JoinAlias(() => ML.User,() => U)
.Where(() => U.Full_Name.IsInsensitiveLike("%" + FullNameSearchFilter + "%"))
.OrderBy(x => x.Id).Asc
.Skip((skip - 1) * take)
.Take(take)
.List<Teacher>();
Không hoạt động!
EDIT 2
mã sql đang được cho thấy một cách chính xác; Tôi có thể xác minh điều này thông qua NHibernate Profiler của tôi. Nhưng vì một lý do nào đó khi dữ liệu đã được tải, nó sẽ xuất hiện lỗi và giao dịch được khôi phục. Bây giờ nó xuất hiện với tôi rằng điều này không còn chỉ là về truy vấn?
Đây là những gì tôi đã thử, nhưng stil Tôi không làm việc, hãy sửa tôi nếu tôi viết sai điều gì đó .. :) phiên trả lại.QueryOver() .JoinQueryOver (u => u.User) .Where (x => x.Full_Name.IsInsensitiveLike (" % "+ FullNameSearchFilter +"% ")) .OrderBy (x => x.Id) .Asc .Skip ((bỏ qua - 1) * take) .Hãy lấy (take) .List (); –
RicL
Cả hai phương pháp đều không hoạt động! :/Cả JoinQueryOver và JoinAlias đều cung cấp cùng một lỗi chính xác. – RicL
Có phải 'Full_Name' là một cột được ánh xạ trong' Người dùng' không? Còn 'MasterLicensee' là gì? Bạn không nên trở về một danh sách các 'Giáo viên' thay vì' MasterLicensee'? –