Generics 具有通用存储库的DynamicIQ库

Generics 具有通用存储库的DynamicIQ库,generics,entity-framework-4.1,repository-pattern,dynamic-linq,Generics,Entity Framework 4.1,Repository Pattern,Dynamic Linq,有没有人举过将动态linq库与通用存储库模式结合使用的例子 我发现的问题是dynamicCorderby()返回IQueryable,因此我无法在通用存储库中真正使用它。重写orderby很酷,例如orderby(o=>o[“mycolumn”])我似乎只能在具体的实现上工作 更新: 这里是一些示例代码,而不是将其向上移动到存储库中(我正试图避免这种情况,因为存储库目前非常干净),而是将其放在业务层中(目前还可以) 我把。。。因为我还没有弄清楚如何将它转换为IEnumerable,但这还不

有没有人举过将动态linq库与通用存储库模式结合使用的例子

我发现的问题是dynamicCorderby()返回IQueryable,因此我无法在通用存储库中真正使用它。重写orderby很酷,例如orderby(o=>o[“mycolumn”])我似乎只能在具体的实现上工作


更新:

这里是一些示例代码,而不是将其向上移动到存储库中(我正试图避免这种情况,因为存储库目前非常干净),而是将其放在业务层中(目前还可以)

我把。。。因为我还没有弄清楚如何将它转换为IEnumerable,但这还不是真正的问题

主要的问题是我有个错误

无法强制转换类型为的对象 'System.Data.Objects.ObjectQuery
1[BusinessUnitUser]'
键入“System.Data.Objects.ObjectQuery
1[System.Object]”

这是由.dynamiccorderby(orderBy)上引起的


编辑:这是堆栈跟踪

[InvalidCastException:无法强制转换类型为的对象 'System.Data.Objects.ObjectQuery
1[EntityLayer.BusinessUnit]'
键入“System.Data.Objects.ObjectQuery
1[System.Object]”。]
System.Data.Entity.Internal.Linq.InternalQuery
1..ctor(InternalContext
内部上下文,ObjectQuery ObjectQuery)+170
System.Data.Entity.Internal.Linq.DbQueryProvider.CreateQuery(表达式 表达式)+116 dynamicQ.DynamicQueryable.OrderBy(IQueryable
1 源代码,LambdaExpression表达式)+356
dynamicLink.DynamicQueryable.dynamiccorderby(IQueryable
1源代码,
Func
2选择器)+58
BusinessLayer.BusinessUnitBL.Get(Int32 pageSize,Int32 页码、Int32和totalPages、Func
2 orderBy、表达式
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 e) 在C:\TEST\BusinessUnit.aspx.cs中:49
System.Web.UI.Control.LoadRecursive()+74
System.Web.UI.Page.ProcessRequestMain(布尔值 IncludeStages前同步点,布尔值IncludeStages后同步点) +2207


如果您实际上不需要通用存储库,也许可以将其删除。我很乐意这样做,但我们正在使用通用存储库将多租户层/where子句插入到所有通过它的查询中。但感谢您的反馈。这是使用通用存储库的一个非常好的理由!事实上,我听了很久的第一个好理由。最近,泛型存储库无缘无故地变得风靡一时。如果你能发布一些示例代码,这会有很大帮助。有点离题:你成功地使用了新的动态LINQ吗(除了gen.repo问题)?你已经试过了吗?它稳定吗?我在一些项目中使用旧的动态LINQ。我没有注意到有新的东西。尝试新项目的新库会很有趣。如果您实际上不需要,可能解决方案是删除您的通用存储库。我很乐意,但我们正在使用通用存储库将多租户层/where子句插入到所有通过它的查询中。但感谢您的反馈。这是使用通用存储库的一个非常好的理由!事实上,我听了很久的第一个好理由。最近,泛型存储库无缘无故地变得风靡一时。如果你能发布一些示例代码,这会有很大帮助。有点离题:你成功地使用了新的动态LINQ吗(除了gen.repo问题)?你已经试过了吗?它稳定吗?我在一些项目中使用旧的动态LINQ。我没有注意到有新的东西。尝试新项目的新库会很有趣。
    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"])