【问题标题】:Entity Framework: No accessible 'where' can be called without narrowing conversion?实体框架:没有缩小转换范围就不能调用可访问的“哪里”?
【发布时间】:2011-07-18 15:46:32
【问题描述】:

这是我的功能:

Public Function ListPublishedArticles(ByVal startingDate As DateTime) As List(Of Article)
        Dim db As ArticleEntities = ArticleEntitiesFactory.Current()
        Dim listArticles As List(Of Article) = Nothing

        If startingDate <> Nothing Then
            listArticles = db.Articles.Where(Function(x) x.Publish = True And x.startTime <= startingDate)
        End If

        Return listArticles
    End Function

在 .Where() 上出现以下错误:

No Accessible 'where' can be called without narrowing conversion. Candidates are
   Public Function Where(Of Article)(IEnumerable(Of Article), Func(Of Article, Boolean)) As IEnumerable(Of Article) (In Class Enumerable)
   Public Function Where(Of Article)(IQueryable(Of Article), Expression(Of Func(Article, Boolean))) As IQueryable(Of Article) (In Class Queryable)

我了解错误,但不知道如何修复它,我如何告诉它我使用的是哪一个?在 msdn 上,它说要忽略此错误,将 Option Strict 设置为 Off,但它已经关闭。它没有在底部的错误列表中显示为错误,只是一个红色下划线,但它阻止我继续使用 .OrderBy() 和其他功能。

谢谢。

【问题讨论】:

    标签: .net vb.net entity-framework


    【解决方案1】:

    我意识到这篇文章已经很老了,但我最近遇到了同样的问题,原来是因为我正在评估一个布尔值? = 真。我通过在我的布尔值上调用 .Equals() 扩展方法来避免转换整个表达式?参数即

    .Where(Function(x) x.Publish.Equals(True) And x.startTime <= startingDate)
    

    或者

    .Where(Function(x) (x.Publish.HasValue AndAlso x.Publish.Value = True) And x.startTime <= startingDate) 
    

    【讨论】:

      【解决方案2】:

      尝试拨打ToList()。这将把它送到List(Of Article)

      【讨论】:

      • 也不能这样做,我在它后面写的任何内容都显示“无法解析符号 (x))。这不是错误,因为我试图将结果转换为列表而不调用 ToList()。它说它不知道在查询上使用哪个重载 where 方法,但我不知道如何告诉它哪个。我以前从未遇到过这个问题,因为通常我只在 using 块中使用查询过去,但我刚刚修改了我的框架,以一种新的方式处理数据上下文,现在这个弹出来了。
      【解决方案3】:

      嗯,看起来答案很明显,我只是没有得到,我需要做的就是将 Where 表达式 CType 到其中一种参数类型,如下所示:

      .Where(Ctype(Function(x) x.Publish = True And x.startTime <= startingDate, Func(Of Article, Boolean)))
      

      【讨论】:

        猜你喜欢
        • 2013-09-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多