OdataToEntity: Expand Bug ?

Hi,

I have this code:

using GomoiuWeb.Base;
using GomoiuWeb.Shared.Data.DB;
using OdataToEntity;
using OdataToEntity.EfCore;
using System;
using System.IO;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace ODat
{
    class Program
    {
        static async Task Main(string[] args)
        {
            Global.DefaultConnectionString = "...";
            //Create adapter data access, where OrderContext your DbContext
            var dataAdapter = new OeEfCoreDataAdapter<AppDB>();
            //Create query parser
            var parser = new OeParser(new Uri("http://dummy"), dataAdapter.BuildEdmModelFromEfCoreModel());
            //Query
            var uri = new Uri("http://dummy/Doctors?$select=Name&$expand=ClientAppointments");
            //The result of the query
            var response = new MemoryStream();
            //Execute query
            await parser.ExecuteGetAsync(uri, OeRequestHeaders.JsonDefault, response, CancellationToken.None);

            Console.WriteLine(Encoding.ASCII.GetString(response.ToArray()));

            Console.ReadKey();
        }
    }
}

And I get an exception with the $expand:

"System.InvalidOperationException: Nullable object must have a value.\r\n   at lambda_method(Closure , ClientAppointments )\r\n   at System.Linq.Internal.Lookup`2.CreateForJoinAsync(IAsyncEnumerable`1 source, Func`2 keySelector, IEqualityComparer`1 comparer, CancellationToken cancellationToken)\r\n   at System.Linq.AsyncEnumerable.GroupJoinAsyncEnumerable`4.GroupJoinAsyncEnumerator.MoveNext(CancellationToken cancellationToken)\r\n   at System.Linq.AsyncEnumerable.SelectManyAsyncIterator`3.MoveNextCore(CancellationToken cancellationToken)\r\n   at System.Linq.AsyncEnumerable.AsyncIterator`1.MoveNext(CancellationToken cancellationToken)\r\n   at System.Linq.AsyncEnumerable.SelectEnumerableAsyncIterator`2.MoveNextCore(CancellationToken cancellationToken)\r\n   at System.Linq.AsyncEnumerable.AsyncIterator`1.MoveNext(CancellationToken cancellationToken)\r\n   at Microsoft.EntityFrameworkCore.Query.Internal.AsyncLinqOperatorProvider.ExceptionInterceptor`1.EnumeratorExceptionInterceptor.MoveNext(CancellationToken can
cellationToken)\r\n   at OdataToEntity.Db.OeDbEnumerator.MoveNextAsync() in D:\\programming\\OdataToEntity\\source\\OdataToEntity\\Db\\OeDbEnumerator.cs:line 134\r\n   at OdataToEntity.Writers.OeGetWriter.GetWriter.SerializeAsync(OeEntryFactory entryFactory, OeAsyncEnumerator asyncEnumerator, OeQueryContext queryContext) in D:\\programming\\OdataToEntity\\source\\OdataToEntity\\Writers\\OeGetWriter.cs:line 129\r\n   at OdataToEntity.Writers.OeGetWriter.SerializeAsync(OeQueryContext queryContext, OeAsyncEnumerator asyncEnumerator, String contentType, Stream stream) in D:\\programming\\OdataToEntity\\source\\OdataToEntity\\Writers\\OeGetWriter.cs:line 246\r\n   at OdataToEntity.OeGetParser.ExecuteAsync(ODataUri odataUri, OeRequestHeaders headers, Stream stream, CancellationToken cancellationToken) in D:\\programming\\OdataToEntity\\source\\OdataToEntity\\Parsers\\OeGetParser.cs:line 120\r\n   at OdataToEntity.OeParser.ExecuteQueryAsync(ODataUri odataUri, OeRequestHeaders headers, Stream responseStream, Cancellat
ionToken cancellationToken) in D:\\programming\\OdataToEntity\\source\\OdataToEntity\\Parsers\\OeParser.cs:line 113\r\n   at OdataToEntity.OeParser.ExecuteGetAsync(Uri requestUri, OeRequestHeaders headers, Stream responseStream, CancellationToken cancellationToken) in D:\\programming\\OdataToEntity\\source\\OdataToEntity\\Parsers\\OeParser.cs:line 108\r\n   at ODat.Program.Main(String[] args) in C:\\Work\\gomoiu\\ODat\\Program.cs:line 27\r\n   at ODat.Program.<Main>(String[] args)"

Is this a bug or I should configure something to get it to work?

Thanks.

About this issue

  • Original URL
  • State: closed
  • Created 5 years ago
  • Comments: 16 (6 by maintainers)

Commits related to this issue

Most upvoted comments

Fix: ‘Nullable object should be set to’, now can use ‘expand’ without ‘$filter=DoctorSpecializations/any()’. Fix: Select only the navigation property.