2017-09-15 10 views
7

मेरे पास एक एएसपी.NET कोर 1.1 वेब प्रोजेक्ट है।न्यूनतम नियंत्रक को कार्यान्वित करने के लिए कैसे करें

मैंने Microsoft.OData.Core स्थापित किया है और http://odata.github.io/ के तहत "प्रारंभ करना" लिंक किया है। "Build an OData v4 Service with RESTier Library"

  • "Build an OData v4 Service with OData WebApi Library"
  • इस महीने SO answerMicrosoft.AspNetCore.OData के लिंक माइक्रोसॉफ्ट के स्वामित्व में नहीं है जो

    दोनों उस पृष्ठ पर निम्नलिखित लिंक नेट 45 के लिए कर रहे हैं

    • और एक साल पहले आखिरी बार अपडेट किया गया था।

      यह SO answer का तात्पर्य "ASP.net कोर में OData समर्थन"

      मैं ऑटो को यह तीसरे पक्ष के समाधान AutoODataEF.Core देख हालांकि नियंत्रकों उत्पन्न करते हैं।

      आखिरकार, मुझे यह git issue इंगित करता है कि एएसपी.Net कोर के लिए ओडाटा वेबएपीआई आगे आ रहा है, लेकिन आखिरकार वर्तमान में उपलब्ध नहीं है।

      मान लीजिए कि मेरे पास एक व्यक्ति मॉडल और एक ईएफ डीबीकॉन्टेक्स्ट है।

      मैं न्यूनतम ओडाटा नियंत्रक को कैसे कार्यान्वित करूं?

    उत्तर

    1

    asp.net कोर netcoreapp2.0 पर OData, 20180216

    1. स्थापित पैकेज Microsoft.AspNetCore.OData -पूर्व {7.0.0-beta1}

    2. Startup.cs में

      :

      public virtual void ConfigureServices(IServiceCollection services) 
      { 
          // ... 
          services.AddMvc(); // mvc first 
          services.AddOData(); // odata second 
      } 
      
      public virtual void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
      { 
          // ... 
          var builder = new ODataConventionModelBuilder(serviceProvider); 
          builder.EntitySet<SomeClass>(nameof(SomeClass).ToLower()).EntityType.HasKey(s => s.SomeId);   
          builder.EntitySet<OtherClass>(nameof(OtherClass).ToLower()).EntityType.HasKey(s => s.OtherId).MediaType(); // etc 
          var model = builder.GetEdmModel(); 
      
          app.UseMvc(routeBuilder => 
          {    
           routeBuilder.Select().Expand().Filter().OrderBy().MaxTop(null).Count(); 
           routeBuilder.MapODataServiceRoute("ODataRoute", "data", model); // e.g. http://localhost:port/data/someclass?... 
           // insert special bits for e.g. custom MLE here 
           routeBuilder.EnableDependencyInjection(); 
           routeBuilder.MapRoute(name: "default", template: "{controller=Home}/{action=Index}/{id?}"); // enable mvc controllers 
          });  
      } 
      
    3. SomeClassController.cs में

      :

      public class SomeClassController : ODataController // or just plain Controller 
      { 
          [EnableQuery] 
          [HttpGet] 
          [ODataRoute("someclass")] 
          public List<SomeClass> Get() // this should maybe be an IQueryable wrapped by an IActionResult/OkObjectResult 
          { 
           List<SomeClass> list = new List<SomeClass>(); 
           // however you do this 
           return list; 
          } 
      } 
      
    संबंधित मुद्दे

     संबंधित मुद्दे