Skip to content

Instantly share code, notes, and snippets.

@xuzhg
Last active November 28, 2019 13:35
Show Gist options
  • Select an option

  • Save xuzhg/f2e9d6d1f66c4f82be1e4d4824277cd3 to your computer and use it in GitHub Desktop.

Select an option

Save xuzhg/f2e9d6d1f66c4f82be1e4d4824277cd3 to your computer and use it in GitHub Desktop.
BookStoreContext.cs
public class BookStoreContext : DbContext
{
public BookStoreContext(DbContextOptions<BookStoreContext> options)
: base(options)
{
}
public DbSet<Book> Books { get; set; }
public DbSet<Press> Presses { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Book>().OwnsOne(c => c.Location);
}
}
@fabriziogelsi
Copy link
Copy Markdown

fabriziogelsi commented Nov 27, 2019

I'm still getting not information about odata.context or odata.dataLink (I want to get this information because I'm learning and trying to do a project with that data, I want to do a pagination by server-side). I've tried with 7.0 and 7.1 right now :s.

@fabriziogelsi
Copy link
Copy Markdown

Response header: (Should be "application/json; odata.metadata=minimal; odata.streaming=true"?) I got:
Content-Type application/json; charset=utf-8

@xuzhg
Copy link
Copy Markdown
Author

xuzhg commented Nov 27, 2019

@fabriziogelsi I see. Did you add more books into the Datasource? In my sample, there's only two books sample, you add "PageSize=2", the whole data source meets the page size requirement, so the server returns all data and no nextlink added.

If you change to [Pagesize=1], you will get the response:

{
    "@odata.context": "http://localhost:5001/odata/$metadata#Books",
    "value": [
        {
            "Id": 1,
            "ISBN": "978-0-321-87758-1",
            "Title": "Essential C#5.0",
            "Author": "Mark Michaelis",
            "Price": 59.99,
            "Location": {
                "City": "Redmond",
                "Street": "156TH AVE NE"
            }
        }
    ],
    "@odata.nextLink": "http://localhost:5001/odata/Books?$skip=1"
}

@fabriziogelsi
Copy link
Copy Markdown

Yes, I added 5 books. When I do the same than you, the response is:

[ { "id": 1, "isbn": "978-0-321-87758-1", "title": "Essential C#5.0", "author": "Mark Michaelis", "price": 59.99, "location": { "city": "Redmond", "street": "156TH AVE NE" }, "press": { "id": 1, "name": "Addison-Wesley", "email": null, "category": 0 } } ]

Which version NetCore are you using? And OData?. I see all the examples in internet that the response contains all the data, but I can't take the same response, Idk why :S I've just copied your example, and added the "[Enable Query(PageSize =)]" what is working, the pagination, but the other data is not retrieve.

@xuzhg
Copy link
Copy Markdown
Author

xuzhg commented Nov 27, 2019

Your payload looks a "Normal" JSON Payload, it's not OData JSON Payload. OData JSON Payload includes both control information and entity data. "@odata.context" and "@odata.nextLink" are control data, why does your data not have "@odata.context"? Do you set the metadata level as None? However, your metadata is "odata.metadata=minimal" not "odata.metadata=none". So, it's weird. Please compare your sample with my sample to see what's the difference.

I didn't change my project configuration. I cloned the sample and built/run in the Visual Studio 2019.

@fabriziogelsi
Copy link
Copy Markdown

No. My header's response is: Content-Type application/json; charset=utf-8
I was wondering if I should receive a header like this: "application/json; odata.metadata=minimal; odata.streaming=true".
I will check again, but I've just copied your sample, so I don't understand why is not working :S. I'm using VS2019 too.

@J0rgeSerran0
Copy link
Copy Markdown

Great @xuzhg :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment