【问题标题】:Adding a case-sensitive to OData in vb.net在 vb.net 中添加区分大小写的 OData
【发布时间】:2019-12-18 16:27:15
【问题描述】:

我在我的 WebApi 中添加了一个 OData v4,它运行良好。我遵循了这个指示:https://docs.microsoft.com/en-us/odata/webapi/getting-started

但是,我注意到,我需要不区分大小写。我在 C# 中找到了解决方案:OData and .NET Core 2 Web API - disable case-sensitivity?

但不知何故,它对我不起作用。当我尝试它时,它说:

未找到与请求 URI '[my url]' 匹配的 HTTP 资源。

注册有效的方法:

Public Shared Sub Register(ByVal config As HttpConfiguration)
    builder = New ODataConventionModelBuilder()
    builder.EntitySet(Of vw_CompanyPerson)("profiles")
    config.MapODataServiceRoute("odata", "odata", builder.GetEdmModel())

    config.Select().Expand().Filter().OrderBy().MaxTop(Nothing).Count()
End Sub

这是我的代码:

Imports System.Web.Http
Imports Guestline.RezLynx.Persistence
Imports Microsoft.AspNet.OData.Builder
Imports Microsoft.AspNet.OData.Extensions
Imports Microsoft.OData
Imports Microsoft.OData.UriParser

Public Class WebApiConfig

    Private Shared Property builder() As ODataModelBuilder

    Public Shared Sub Register(ByVal config As HttpConfiguration)
        builder = New ODataConventionModelBuilder()
        builder.EntitySet(Of vw_CompanyPerson)("profiles")

        config.MapODataServiceRoute(
            "odata",
            "odata",
            New Action(Of IContainerBuilder)(AddressOf ModifyContainer))

        config.Select().Expand().Filter().OrderBy().MaxTop(Nothing).Count()
    End Sub

    Private Shared Sub ModifyContainer(obj As IContainerBuilder)
        obj.AddService(ServiceLifetime.Singleton, New Func(Of IServiceProvider, ODataUriResolver)(AddressOf CreateUriResolver))
        obj.AddService(ServiceLifetime.Singleton, New Func(Of IServiceProvider, Edm.IEdmModel)(AddressOf GetEdmModel))
    End Sub

    Private Shared Function GetEdmModel(arg As IServiceProvider) As Edm.IEdmModel
        Return builder.GetEdmModel()
    End Function

    Private Shared Function CreateUriResolver(arg As IServiceProvider) As ODataUriResolver
        Return New CaseInsensitiveUriResolver()
    End Function

End Class

还有:

Imports Microsoft.OData.UriParser

Public Class CaseInsensitiveUriResolver
    Inherits ODataUriResolver

    Public Overrides Property EnableCaseInsensitive As Boolean
        Get
            Return True
        End Get
        Set(value As Boolean)

        End Set
    End Property

End Class

【问题讨论】:

    标签: vb.net odata


    【解决方案1】:

    我修好了。

    我发现我没有返回IQueryable 接口,并且比较是在代码中完成的,而不是在数据库中。一旦我使用了IQueryable,SQL 就会以正确的方式生成,并且比较正确。

    专业提示:使用 SQL Server Profiler 检查您对 DB 的请求!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多