我有一个非常简单的扩展方法.当尝试在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和其他网站进行了一些挖掘,并且遇到了一些有趣的答案,但却无法与他们一起超越终点线.
提前致谢!
只是学习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)
我已经尝试了一些实现这种效果的方法。最终目标是动态注册和解析实例。