小编wor*_*yte的帖子

在EF lambda表达式中使用扩展方法或Func

我有一个非常简单的扩展方法.当尝试在Entity框架中使用它时,我得到了这个

LINQ to Entities does not recognize the method 'Boolean Between[DateTime](System.DateTime, System.DateTime, System.DateTime, Boolean)' 
Run Code Online (Sandbox Code Playgroud)

许多其他人都遇到了同样的问题,我理解错误.总有办法让它发挥作用.

我一直在努力想弄清楚如何重新实现这个方法并让它成为EF友好的linq.

对于这个特定的方法,它只是检查一个IComparable是否在另外两个之间.所以它真的会扩展到

.Where(x=> x.Date >= startDate && x.Date <= endDate)
Run Code Online (Sandbox Code Playgroud)

而我真正想做的就是让眼睛更容易,并表达出来

.Where(x=> x.Date.Between(startDate, endDate))
Run Code Online (Sandbox Code Playgroud)

因为我对Func很新,所以我确信有一种方法可以接近扩展方法(即使专门为EF编写),这样他们就会对EF linq友好

我已经围绕SO和其他网站进行了一些挖掘,并且遇到了一些有趣的答案,但却无法与他们一起超越终点线.

提前致谢!

c# linq entity-framework

2
推荐指数
1
解决办法
1146
查看次数

Autofac注册所有名为IFoo.Name的IFoo类型。

只是学习Autofac并努力按照惯例重新命名几个命名实例。

public interface IFoo
{
    string AutoFactName{ get; }
    object DoSomething();
}
Run Code Online (Sandbox Code Playgroud)

看着这个界面,我想要完成的是沿着这些思路

        builder.RegisterTypes()
            .AssignableTo<IFoo>()
            .As<IFoo>()
            .Named<IFoo>(i => i.AutoFactName);
Run Code Online (Sandbox Code Playgroud)

我已经尝试了一些实现这种效果的方法。最终目标是动态注册和解析实例。

c# dependency-injection autofac autofac-configuration

0
推荐指数
1
解决办法
39
查看次数