ASP.net Core OData Строковый ключ является нулевым - PullRequest
0 голосов
/ 26 марта 2019

У меня здесь странный. Я портировал некоторые контроллеры с оддаты asp.net на оддаты ядра asp.net и столкнулся с небольшим затруднением с первичными ключами.

В моем приложении .net framework 4.6.2 у меня есть GUID в качестве первичного ключа, а в приложении .net core у меня есть строка в качестве первичного ключа. Я был в состоянии получить почти все, работающее за исключением метода Get (ключ). Это мой метод подписи:

[HttpGet]
[EnableQuery]
public async Task<IActionResult> Get([FromODataUri] string key)
{
    // key is null!
}

1 Ответ

0 голосов
/ 26 марта 2019

Пожалуйста, следуйте ниже шага

  1. Установите Microsoft.AspNetCore.OData из пакета NuGet
  2. StartUp.cs

       public void ConfigureServices(IServiceCollection services)
       {
         services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
         services.AddOData(); //This Is added for OData
       }
    
     public void Configure(IApplicationBuilder app, IHostingEnvironment env)
     {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseHsts();
        }
    
        app.UseHttpsRedirection();
        app.UseMvc(routeBuilder =>
        {
            routeBuilder.EnableDependencyInjection(); //This Is added for OData
            routeBuilder.Expand().Select().Count().OrderBy().Filter(); //This Is added for OData
        });
    }
    
  3. In Api Conteroller

    [HttpGet]
    [EnableQuery] //This Is added for OData
    public ActionResult<List<TestModel>> Get()
    {
        var model = new List<TestModel>();
        for (int i = 1; i <= 10; i++)
        {
            var res = new TestModel()
            {
                ID = i,
                Name="Test"+i,
                Mobile="Test"+i,
                City="Test_"+i
            };
            model.Add(res);
        }
        return model;
    }
    public class TestModel
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public string Mobile { get; set; }
        public string City { get; set; }
    }
    
  4. После запуска Api и проверки как это enter image description here

...