-
Notifications
You must be signed in to change notification settings - Fork 3.3k
Labels
area-model-buildingarea-perfcomposite-issueA grouping of multiple related issues into one issueA grouping of multiple related issues into one issue
Milestone
Description
This an "epic" issue for the theme of generating a compiled model with fast loading and access times. Specific pieces of work will be tracked by linked issues.
Proposed for 6.0
Used by calling new tool commands (all parameters are optional)
dotnet ef dbcontext optimize -c MyContext -o MyFolder -n My.Namespace
Optimize-DbContext -Context MyContext -OutputDir MyFolder -Namespace My.Namespace
- Add runtime annotation support to model Add runtime annotation support to model #22031
- Convert metadata extension methods to default interface implementations. Convert metadata extension methods to default interface implementations. #19213
- Create a read-optimized implementation of IModel that can be used as the base for the compiled model Create a read-optimized implementation of IModel #8258
- Add API to set custom implementation types instead of objects
-
ValueGenerator
(store non-lambda configuration separately) -
ValueComparer
andValueConverter
-
- Implement a generator that outputs the source code for a custom model implementation
- Throw when the model contains non-serializable configuration like lambdas, proxy types and non-serializable expressions. Or if it's using a read-optimized implementation.
- Generate
#nullable enable
- Warn when using a model generated by an older version.
- Warn when using a non-default model cache key.
Backlog
- Consider discovering the model automatically instead of requiring 'UseModel', by using assembly-level attribute (Discover the compiled model automatically #24893)
- Consider adding a MsBuild task to generate the model at build-time (Generate the compiled model during build #24894)
- Either move the members from the pubternal model interfaces to the public ones, so that they can have non-dynamic implementations or add a runtime annotation-based backup implementation. (Remove IRuntime* interfaces #24895)
- Generate compiled relational model (Generate compiled relational model #24896)
- Add tests that assert the relational model, view, query mapping and default mappings
- Generate code for query filters when possible. (Compiled model: Generate code for query filters when possible #24897)
- Generate constructor bindings (Compiled model: Generate constructor bindings #24898)
- Generate code that builds the model lazily (Compiled model: Generate code that builds the model lazily #24899)
- Rely on static binding instead of reflection for properties and fields (Compiled model: Use static binding instead of reflection for properties and fields #24900)
- Split out the mutable model implementation to a different assembly as it's not needed when using compiled model (Add feature switches to reduce app size #24901)
- Generate custom lazy loading and change tracking proxy types. (Compiled model: Allow use of lazy loading and change tracking proxy types. #24902)
- Generate lambdas used in change tracking (Compiled model: Generate lambdas used in change tracking #24904)
- Generate code that normally depends on reflection types in the model (Type, MemberInfo, etc.) to avoid all reflection at runtime (Don't use reflection at runtime #24903)
lemkepf, jnm2, MarcoLoetscher, AndrewBoklashko, kierenj and 112 moreguillaume86viniciusverasdossantos and Amritraj015
Metadata
Metadata
Assignees
Labels
area-model-buildingarea-perfcomposite-issueA grouping of multiple related issues into one issueA grouping of multiple related issues into one issue