मैं इस ASP.NET MVC3 कोड है कि वसंत और धाराप्रवाह NHibernate (NHIB 3.1)हल नहीं कर सका संपत्ति: User.Full_Name की: Harrods.Core.Entities.Teacher
द्वारा संचालित रहा है मैं इस त्रुटि है:
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
इस कोड को समस्या लगता है कि से आ रही है:
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>();
मेरे शिक्षक वर्ग इस तरह दिखता है:
[Serializable]
public class Teacher
{
public virtual User User { get; set; }
}
और मेरे उपयोगकर्ता वर्ग इस तरह दिखता है:
public class User : BaseEntity<User>
{
public virtual string Email { get; set; }
public virtual string Full_Name { get; set; }
}
सुनिश्चित नहीं हैं कि क्या समस्या दे रही है। सब कुछ ठीक दिखता है। किसी के पास कोई विचार है क्या गलत है? :)
सुनिश्चित नहीं हैं, लेकिन वे कुछ हद तक ही लगते हैं लेकिन वास्तव में समझ में नहीं आता वैसे भी हल करने के लिए कैसे:
NHibernate.QueryException with dynamic-component A correct way to load entities by Id list when Id is not mapped
संपादित करें: इस कोशिश की, लेकिन अब भी वही त्रुटि दे रही है : -
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>();
कोशिश उपनाम के रूप में अच्छी तरह से ..:
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>();
न तो काम कर रहा है!
संपादित 2
एसक्यूएल कोड सही ढंग से दिखाया जा रहा है; मैं इसे अपने एनएचबीर्नेट प्रोफाइलर के माध्यम से सत्यापित कर सकता हूं। लेकिन किसी कारण से डेटा लोड हो जाने के बाद, यह त्रुटि को पॉप करता है और लेनदेन वापस लुढ़का जाता है। अब मुझे लगता है कि यह सिर्फ क्वेरीओवर के बारे में नहीं है?
यह है कि मैं क्या करने की कोशिश की, लेकिन stil है एल काम नहीं कर रहा, क्या मुझे ठीक कर लें मैंने कुछ गलत लिखा .. :) वापसी session.QueryOver() .JoinQueryOver (यू => u.User) .Where (x => x.Full_Name.IsInsensitiveLike (" % "+ FullNameSearchFilter +"% ")) । ऑर्डर बी (x => x.Id) .एससी .Skip ((छोड़ें - 1) * ले लें) ।ले लो (ले लो) । लिस्ट <मास्टरलिसेन्से>(); –
RicL
न तो विधियां काम करती हैं! :/दोनों JoinQueryOver और JoinAlias एक ही सटीक त्रुटि देता है। – RicL
'उपयोगकर्ता_' में 'पूर्ण_नाम' एक मैप किए गए कॉलम है? 'मास्टरलिसेन्से' भी क्या है? क्या आप 'मास्टरलिसेन्से' के बजाय 'शिक्षक' की सूची वापस नहीं कर रहे हैं? –