سؤال

واني اسعى الى الحصول على الاستعلام التالي للعمل:

Session.Linq<FooBar>()
    .SetCachable(true)
    .SetCacheRegion("foobar")
    .Select(x => new Baz(x.Foo, x.Bar))
    .ToList();

وهذا يعمل عند تشغيل التخزين المؤقت قبالة، ولكن مع التخزين المؤقت تمكين I تتلقى الاستثناء التالي:

System.InvalidCastException: الإضافة غير قادر على الكائن المدلى بها من نوع "الباز" ل نوع 'System.Object []'.

وبقية تتبع المكدس هي:

at NHibernate.Cache.StandardQueryCache.Put(QueryKey key, ICacheAssembler[] returnTypes, IList result, Boolean isNaturalKeyLookup, ISessionImplementor session)
at NHibernate.Loader.Loader.PutResultInQueryCache(ISessionImplementor session, QueryParameters queryParameters, IType[] resultTypes, IQueryCache queryCache, QueryKey key, IList result)
at NHibernate.Loader.Loader.ListUsingQueryCache(ISessionImplementor session, QueryParameters queryParameters, ISet`1 querySpaces, IType[] resultTypes)
at NHibernate.Loader.Loader.List(ISessionImplementor session, QueryParameters queryParameters, ISet`1 querySpaces, IType[] resultTypes)
at NHibernate.Impl.SessionImpl.List(CriteriaImpl criteria, IList results) 

أحد يعرف إذا كان هذا هو الحد NHibernate أو أفعل شيئا خاطئا؟

هل كانت مفيدة؟

المحلول

وLinqToNHibernate ليس التنفيذ الكامل للاستعلام البيانات.

استخدم CriteriaQuery (تغطية حوالي 95٪ من كل ما هو ممكن لاستعلام)، أو HQL (تغطية 100٪).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top