GithubHelp home page GithubHelp logo

Comments (5)

voronov-maxim avatar voronov-maxim commented on June 8, 2024

Dynamic data context not ready yet, working in progress.

var stream = new MemoryStream();

var optionsBuilder = new DbContextOptionsBuilder<DynamicDbContext>();
optionsBuilder = optionsBuilder.UseSqlServer(@"Server=.\sqlexpress;Initial Catalog=OdataToEntity;Trusted_Connection=Yes;", opt => opt.UseRelationalNulls(true));
var sqlServerSchema = new SqlServerSchema(optionsBuilder.Options);
var metadataProvider = new DynamicMetadataProvider(sqlServerSchema);
//metadataProvider.TableMappings = GetMappings();

var typeDefinitionManager = DynamicTypeDefinitionManager.Create(metadataProvider);
var dataAdapter = new DynamicDataAdapter(typeDefinitionManager);
var dynamicEdmModel = dataAdapter.BuildEdmModel();

var parser = new OeParser(new Uri("http://dummy"), dynamicEdmModel);
await parser.ExecuteGetAsync(new Uri("http://dummy/Orders?$expand=Customer,Items&$orderby=Id"), OeRequestHeaders.JsonDefault, stream, CancellationToken.None);

stream.Position = 0;
String result = new StreamReader(stream).ReadToEnd();

Error ordering an aggregation result, this is bug Microsoft.OData.Core
filter and orderby on aggregation result do not work

from odatatoentity.

duynii avatar duynii commented on June 8, 2024

Hi

I found something else interesting. The issue is not present in the Webapi sample for .NET or .NET Core inmemory data store. This indicates that it is not a problem in the ODataUriParser class - core.

I did a small project to test this out and have managed to reproduced the problem.
An exception is thrown when your call ODataUriParser.ParseUri() method. You can get it to work by calling ParseApply() first.

When I added this into your OeParser.cs, I am getting other errors in your orderby parsing code.
It complain about converting SingleValueOpenPropertyAccessNode to SingleValuePropertyAccessNode. In your code it assumes the orderbyClause.Expression is always a SingleValuePropertyAccessNode

Is it possible to fix this? (This is just a guess)

public static ODataPath ParsePath(IEdmModel edmModel, Uri serviceRoot, Uri uri) { var uriParser = new ODataUriParser(edmModel, serviceRoot, uri, ServiceProviderImpl.Instance); uriParser.ParseApply(); return uriParser.ParsePath(); } public static ODataUri ParseUri(IEdmModel edmModel, Uri relativeUri) { var uriParser = new ODataUriParser(edmModel, relativeUri, ServiceProviderImpl.Instance); uriParser.ParseApply(); return uriParser.ParseUri(); } public static ODataUri ParseUri(IEdmModel edmModel, Uri serviceRoot, Uri uri) { var uriParser = new ODataUriParser(edmModel, serviceRoot, uri, ServiceProviderImpl.Instance); uriParser.ParseApply(); return uriParser.ParseUri(); }

from odatatoentity.

voronov-maxim avatar voronov-maxim commented on June 8, 2024

Hi

Thanks for investigation how to fix bug

from odatatoentity.

duynii avatar duynii commented on June 8, 2024

Thanks for fixing this.

I have a console application that builds the EDM and connects using EF Core. It takes 1.7s for the first query and ~ 100ms for subsequence queries. I assume it is loading the DLLs and taking a long time.

In your opinion is there a way to rebuild the EDM and controller class in a MVC application? I also need OData support (not just return the entire entityset or one entity as some online examples shows).

from odatatoentity.

voronov-maxim avatar voronov-maxim commented on June 8, 2024

Try warm up

from odatatoentity.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.