-
Notifications
You must be signed in to change notification settings - Fork 3.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Make change tracking and the update pipeline compatible with AOT/trimming #29761
Comments
Explanation of this thing a bit unclear. I read title as that some internal work for making code trimmable is needed. But in the description it sounds like introduction of |
@kant2002 the note above was only meant to say we have the query-based update and delete APIs (ExecuteUpdate/Delete) which bypass change tracking and the update pipeline, so the ongoing work to make the query pipeline compatible with NativeAOT would also make it possible to update and delete, even if change tracking and the update pipeline aren't compatible. However, EF still does not allow insertion without going through change tracking and the update pipeline (#29897 tracks adding that), so making change tracking and the update pipeline trimming/AOT-compatible is necessary. As always, you're welcome to look at doing NativeAOT comaptibility work for these components; but I'm afraid that wouldn't be "easy" work for anyone not familiar with EF internals. If you do want to dive in, it would be good to post a quick plan detailing what you intend to do, so we can agree on the approach before you spend too much time on implementation etc. |
I understand that I cannot just land on codebase such EF Core and "just do NativeAOT", some amount of struggle is expected. But I still prefer finding place which is easier, since that allow me work on more or less self-sufficient manner. I think most important question regarding NativeAOT/trimming work is how do you plan to test changes?
This is generic questions, so maybe they should be in parent issue, don't know. |
@kant2002 are you asking about how NativeAOT/trimming test infra works in general (outside of EF)? Or about the EF approach to testing NativeAOT/trimming? At the moment there's almost nothing in place (except for an extremely minimal trimming console app which provides only very basic coverage). The exact scope of EF compatibility with NativeAOT/trimming (and therefore, what is covered by testing) will probably become apparent as the work progresses. In an ideal world, we'd be able to use the existing EF test suite, and simply run it with NativeAOT publishing; that would leverage the extremely comprehensive test coverage which EF already has, rather than starting from scratch. Unfortunately, there are likely to be various hurdles there, with xUnit NativeAOT compatibility possibly being one. So I'm not quite sure how to answer your questions.. I'm hard at work at the moment on #25009 - precompiled queries - which are pretty much a prerequisite to NativeAOT support. Testing is something I intend to think about later in the process. |
Use a variable for the TFM to make future upgrades easier. Part of #29761
Use a variable for the TFM to make future upgrades easier. Part of #29761
Throw when invoking model building or migrations in a NativeAOT context Part of #29761
Throw when invoking model building or migrations in a NativeAOT context Part of #29761
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
* Generate change-tracking delegates in the compiled model. Part of #29761
@AndriySvyryd should we keep this open to track getting to zero warnings for change tracking/update pipelin? |
At this point I think it would be more appropriate to have an overall issue to drive warnings to 0 |
Note that although ExecuteUpdate/Delete allow bypassing change tracking and the update pipeline, we have no ExecuteInsert.
The text was updated successfully, but these errors were encountered: