У кого-нибудь есть примеры использования динамической библиотеки linq с общим шаблоном хранилища?
http://nuget.org/packages/DynamicLINQ
http://weblogs.asp.net/davidfowler/archive/2010/08/19/dynamic-linq-part-2-evolution.aspx
Проблема, которую я нахожу, заключается в том, что dynamicorderby () возвращает IQueryable, поэтому я не могу использовать его в общем хранилище. И это круто, переопределение порядка, например orderby (o => o ["mycolumn"]) Кажется, я только начинаю работать над конкретной реализацией.
UPDATE:
Вот некоторый пример кода, вместо того, чтобы перемещать его вверх по стеку в хранилище, которого я стараюсь избегать, так как в настоящее время хранилища действительно чисты, я помещаю его на бизнес-уровень (что хорошо момент).
public IEnumerable<BusinessUnitUser> GetUsers(int pageSize, int pageNumber, out int totalPages, Func<dynamic, dynamic> orderBy, Expression<Func<BusinessUnitUser, bool>> where = null)
{
IQueryable<dynamic> dynamicQuery = buUserRepository.Get(pageSize, pageNumber, out totalPages).DynamicOrderBy(orderBy);
...
}
И называя это как-то так:
userBL.GetUsers(gvUser.PageSize, gvUser.PageIndex, out recordCount, o => o["UserID"])
Я положил ... поскольку я еще не понял, как привести его к IEnumerable, но это еще не проблема.
Основная проблема в том, что я получаю сообщение об ошибке
Невозможно привести объект типа
'System.Data.Objects.ObjectQuery 1[BusinessUnitUser]'
to type 'System.Data.Objects.ObjectQuery
1 [System.Object]'.
Что вызывается в .DynamicOrderBy (orderBy);
РЕДАКТИРОВАТЬ: Вот трассировка стека
[InvalidCastException: невозможно привести объект типа
'System.Data.Objects.ObjectQuery 1[EntityLayer.BusinessUnit]'
to type 'System.Data.Objects.ObjectQuery
1 [System.Object]'.]
System.Data.Entity.Internal.Linq.InternalQuery 1..ctor(InternalContext
internalContext, ObjectQuery objectQuery) +170<br>
System.Data.Entity.Internal.Linq.DbQueryProvider.CreateQuery(Expression
expression) +116 DynamicLINQ.DynamicQueryable.OrderBy(IQueryable
1
источник, выражение LambdaExpression) + 356
DynamicLINQ.DynamicQueryable.DynamicOrderBy (селектор IQueryable 1 source,
Func
2) + 58
BusinessLayer.BusinessUnitBL.Get (Int32 pageSize, Int32
pageNumber, Int32 и totalPages, Func 2 orderBy, Expression
1 где) в
C: \ TEST \ BusinessUnitBL.cs: 23
UserInterface.Pages.Multitenant.BusinessUnit.DataBindBusinessUnits ()
в C: \ TEST \ BusinessUnit.aspx.cs: 159
UserInterface.Pages.Multitenant.BusinessUnit.SetGridPagerSettings ()
в C: \ TEST \ BusinessUnit.aspx.cs: 177
UserInterface.Pages.Multitenant.BusinessUnit.OnLoad (EventArgs
д) в C: \ TEST \ BusinessUnit.aspx.cs: 49
System.Web.UI.Control.LoadRecursive () + 74
System.Web.UI.Page.ProcessRequestMain (Boolean
includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
+ 2207