Code Monkey home page Code Monkey logo

odata's People

Contributors

idemery avatar maskx avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

odata's Issues

Filtering

I have a datasource where i only want to expose a subset of tables. Is there a way to set a filter on the odata service to accomplish this?

Exception when navingating to one of the odata uris

Hi!

I am trying to use the source code of your project in a new web api application. My web api starts fine, but when i navigate to one of the uris e.g. http://localhost/odata/db/activity i get the following exception:

Could you please assist?

System.InvalidOperationException occurred
HResult=0x80131509
Message=The container built by the container builder must not be null.
Source=System.Web.OData
StackTrace:
at System.Web.OData.Extensions.HttpConfigurationExtensions.GetODataRootContainer(HttpConfiguration configuration, String routeName)
at System.Web.OData.Extensions.HttpRequestMessageExtensions.GetRootContainer(HttpRequestMessage request, String routeName)
at System.Web.OData.Extensions.HttpRequestMessageExtensions.CreateRequestScope(HttpRequestMessage request, String routeName)
at System.Web.OData.Extensions.HttpRequestMessageExtensions.CreateRequestContainer(HttpRequestMessage request, String routeName)
at maskx.OData.DynamicODataPathRouteConstraint.Match(HttpRequestMessage request, IHttpRoute route, String parameterName, IDictionary`2 values, HttpRouteDirection routeDirection) in C:\Users<user>\Documents\Visual Studio 2017\Projects\odata.sqlserver\maskx.OData\DynamicODataPathRouteConstraint.cs:line 91
at System.Web.Http.Routing.HttpRoute.ProcessConstraint(HttpRequestMessage request, Object constraint, String parameterName, HttpRouteValueDictionary values, HttpRouteDirection routeDirection)
at System.Web.Http.Routing.HttpRoute.ProcessConstraints(HttpRequestMessage request, HttpRouteValueDictionary values, HttpRouteDirection routeDirection)
at System.Web.Http.Routing.HttpRoute.GetRouteData(String virtualPathRoot, HttpRequestMessage request)
at System.Web.Http.WebHost.Routing.HttpWebRoute.GetRouteData(HttpContextBase httpContext)

how can add swagger support?

how can add swagger support?

or any Reference Article?

BTW, the nuget pkg is not Latest version(it is net version,not support netcore), I clone the source code and add Reference to my project that it work!!

More than one relationship between two entities

Hello, I was having a look at your library and I think found an issue when a table has more than one column referencing the same foreign table.

For my experiment, since the nuget package didn't seem to work for net core, I cloned your repository and added a new ASP Net Core WebAPI project referencing the library.

I used World Wide Importers sample database from Microsoft.

Then, I configured the datasource for the Sales schema:

var ds = new maskx.OData.SQLSource.SQLServer("Sales", "Data Source=.;Initial Catalog=WideWorldImporters;User ID=sa;PWD=******");
ds.Configuration.DefaultSchema = "Sales";

Had to solve a missing assembly reference to Microsoft.SQLServer.Types by directly referencing said nuget package from my WebAPI project. Got a warning on run, but it started to serve content.

I asked for [webroot]/sales/Customers and the response got cut off in the middle of the 1st customer's JSON data, but it was returning a 200 OK status (!)

So I did a select for a property with [webroot]/sales/Customers?$select=CustomerName, which correctly returned the 663 rows.

I also noticed this exception being caught, but not thrown during first request execution:

Microsoft.OData.ODataException: A property with name 'Customers' on type 'Sales.Customers' has kind 'None', but it is expected to be of kind 'Navigation'.

Then I knew it must be a property on Customers which was causing all my woes.

I went to the metadata URL to inspect the type definition, and I found several properties with the same name:

                [...]
                <NavigationProperty Name="Customers" Type="Collection(Sales.Customers)" Partner="Customers">
                    <ReferentialConstraint Property="CustomerID" ReferencedProperty="BillToCustomerID" />
                </NavigationProperty>
                <NavigationProperty Name="Customers" Type="Collection(Sales.Customers)" Partner="Customers" />
                [...]
                <NavigationProperty Name="People" Type="Collection(Application.People)" Partner="Customers" />
                <NavigationProperty Name="People" Type="Collection(Application.People)" Partner="Customers" />
                [...]
                <NavigationProperty Name="Cities" Type="Collection(Application.Cities)" Partner="Customers" />
                <NavigationProperty Name="Cities" Type="Collection(Application.Cities)" Partner="Customers" />
                [...]
                <NavigationProperty Name="Invoices" Type="Collection(Sales.Invoices)" Partner="Customers">
                    <ReferentialConstraint Property="CustomerID" ReferencedProperty="CustomerID" />
                </NavigationProperty>
                <NavigationProperty Name="Invoices" Type="Collection(Sales.Invoices)" Partner="Customers">
                    <ReferentialConstraint Property="CustomerID" ReferencedProperty="BillToCustomerID" />
                </NavigationProperty>

As displayed, there are several navigation properties with the same name, some of them with the same definition, some not.

I checked the particular case of cities in the sample database, and as expected, there were two foreign keys from Customers to Cities (DeliveryCityID and PostalCityID).

On the other hand, I was only able to find a single foreign key on Customers referencing itself (BillToCustomerID).

I hope all this information might help you to identify and solve this limitation, because I think this library can get to be really useful if it can address most normal circumstances found in a database, and having several foreign keys linking two tables is not an uncommon one.

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.