Skip to content

Azure Cosmos task list #12086

@smitpatel

Description

@smitpatel

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


2.2 Preview 1

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

2.2 Preview 2

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

2.2 Preview 3

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

3.0 Preview 2

  • Switch from REST API to the new SDK, use custom user-agent
  • Set partition key to null by default
  • Remove ToContainer for owned types
  • Add ToProperty to configure the store property name. Empty value deactivates persistence.
  • Create 'id' value from PK values if not set (Cosmos DB: Issues with surrogate PK design in preview 3 #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

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

3.0 Preview 4

3.0 Preview 7

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

3.0 Preview 8

3.0 Preview 9

  • Add proper exception messages

Potential post-3.0 work

Metadata

Metadata

Assignees

No one assigned

    Labels

    composite-issueA grouping of multiple related issues into one issue
    No fields configured for Feature.

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions