Efcore: Azure Cosmos task list

Created on 21 May 2018  路  8Comments  路  Source: dotnet/efcore

Note: This issue is to track smaller task items for EFCore.Cosmos.Sql provider. Use #8443 for discussions/questions.


2.2 Preview 1

  • [x] Basic model building
  • [x] Discriminator value by default
  • [x] Enough metadata support for DDL (database can be created, deleted)
  • [x] Query root converted to select expression
  • [x] Translate WHERE
  • [x] Query execution
  • [x] SaveChanges
  • [x] Need to figure out how to build our package using this infrastructure
  • [x] Navigation rewrite handling of owned types needs to be different (no new query roots) #13000

2.2 Preview 2

  • [x] Binding to JSON objects vs. value buffer (necessary for client-evaluating expressions)

2.2 Preview 3

  • [x] Don't map PK to the id property by default, instead map it to a shadow AK and generate a GUID
  • [x] Implement async query execution
  • [x] Figure out sync pipeline for DDL/DML (underlying API is async) #13160
  • [x] ExecutionStrategy support
  • [x] Switch to REST API
  • [x] Preserve unmapped values (in the JSON) for updates
  • [x] Materialize nested owned entity references and collections
  • [x] Seeding (requires specifying 'id')
  • [x] ToCollection API to map entities to collections explicitly

3.0 Preview 2

  • [x] Switch from REST API to the new SDK, use custom user-agent
  • [x] Set partition key to null by default
  • [x] Remove ToContainer for owned types
  • [x] Add ToProperty to configure the store property name. Empty value deactivates persistence.
  • [x] Create 'id' value from PK values if not set (#13633)

    • Add the discriminator of the root type of it's not part of the key

    • Escape the separator in the values

    • Ensure that we don't generate temporary values for the primary key

3.0 Preview 3

  • [x] Handle value converters
  • [x] Add type mapping
  • [x] Fluent API to configure the store property name for embedded entities

3.0 Preview 4

  • [x] Ability to select the region to use (#15007)

3.0 Preview 7

  • [x] Use the same CosmosClient instance per context configuration and expose it through Database
  • [x] Fluent API to configure discriminator and use it in the convention (allow to remove discriminators for types not sharing a collection)
  • [x] IsCosmos extension method
  • [x] Partition key configuration API
  • [x] Use a JSON wrapper instead of value buffers
  • [x] Improve Coalesce translation (#16152)

3.0 Preview 8

  • [x] Preserve unmapped properties for owned collections (#13578)
  • [x] Handle projected owned entities (#13579)
  • [x] Handle projected owned collections (#13579)
  • [x] Don't persist integer key values for the nested entities
  • [x] Review API, including Internal namespace
  • [x] Add doc comments
  • [x] Add NotNull annotations

3.0 Preview 9

  • [x] Add proper exception messages

Potential post-3.0 work

  • [ ] Add samples and documentation (#12892, https://github.com/aspnet/EntityFramework.Docs/issues/1660)
  • [ ] Perf tests (#14546)
  • [ ] Cache the generated SQL query and evaluate parameter values lazily (#17297)
  • [ ] Diagnostic events including statistics (query cost, activity id) (#17298)
  • [ ] Concurrency only works with ETags, we need to constrain the API that already exists in core level (#17299)
  • [ ] Support Column property attribute (#17300)
  • [ ] API to configure document collection facets (for RU, size, etc.) (#17301)
  • [ ] API to set default collection facets on model (#17301)
  • [ ] Don't use a discriminator for embedded entities without inheritance (#17302)
  • [ ] Support hash and range indexes https://docs.microsoft.com/en-us/azure/cosmos-db/index-types (#17303)
  • [ ] Support unique keys https://docs.microsoft.com/en-us/azure/cosmos-db/unique-keys (#17305)
  • [ ] Basic scalar collection mapping (#14762)
  • [ ] Deal with missing property values (#16105)
  • [ ] Provide access to unmapped properties (JSON or property bag) / JSON from root entry / JSON entity properties. Allow to plugin a custom JSON serializer by replacing a service. (#17306)
  • [ ] Configure TTL per document (#17307)
  • [ ] Update/insert batching (#17308)
  • [ ] Support incremental updates (#13559). Allow to specify custom sprocs
  • [ ] Multiple query data consistency using consistency level and session token headers (#17309)
  • [ ] Optimize Find by using 'id' (#17310)
  • [ ] FromSql support (#17311)
  • [ ] Built-in functions and operators mappings (#16143, #13168)
  • [ ] User defined functions (#15338)
  • [ ] Handle complex order by expressions (#16150)
  • [ ] Translate aggregate operators (#16146)
  • [ ] Translate projection over embedded collection (#16926)
  • [ ] Translate SelectMany (#17312)
  • [ ] Translate GroupBy (#17313)
  • [ ] Translate LeftJoin (#17314)
  • [ ] Translate Skip and Take (#15734)
  • [ ] Translate is (#16391)
  • [ ] Non-owned Include support (#16920)
  • [ ] Optimize query SQL (#13159)
  • [ ] IN operator optimization (#12635)
  • [ ] Support splitting big entities into several items (2MB limit) (#17315)
  • [ ] Add keyless type support (#17316)
  • [ ] Spatial types (uses GeoJSON which supports point, polygon and linestring cc @bricelam) and functions and spatial indexes (#17317)
  • [ ] Partition key handling in queries (#17318)
  • [ ] Helpers for Cosmos DB's change feed (#17319)
  • [ ] Handle queries that require feed options to execute across partitions (#17320)
  • [ ] CLI options to create/drop database (#17321)
closed-fixed type-enhancement

Most helpful comment

All the feature work planned for 3.0 has been completed.

All 8 comments

Probably don't call my tables Unicorn. 馃 馃槃
image

@psibernetic Yes, we are planning to change that after preview. One possible solution is to name it after the derived DbContext type.

Sounds like a great solution, thanks!

Hi, I see on the announcement of 2.2 Preview 2 (https://devblogs.microsoft.com/dotnet/announcing-entity-framework-core-2-2-preview-2/) :

"No nesting of owned entities in documents: We are planning to use entity ownership to decide when an entity should be serialized as part of the same JSON document as the owner. In fact we are extending the ability to specify ownership to collections in 2.2. However this behavior hasn鈥檛 been implemented yet and each entity is stored as its own document."

This GH issue is then linked as a means to check the status of items, but I can't see any items here about nesting owned entities. Is this in place on the previews, or any non-preview version?

@kierenj It's implemented since 2.2 Preview 3

  • [x] Materialize owned entity references and collections

All the feature work planned for 3.0 has been completed.

Is there an active task list or feed to subscribe to get notified as new features get added in general?

Was this page helpful?
0 / 5 - 0 ratings