Per the discussion at https://twitter.com/rothdave/status/1022775345471254529?s=20, see https://github.com/SimonCropp/EfCore.InMemoryHelpers. This wraps in-memory provider to make it more like relational in a few aspects like value generation, referential constraints and concurrency control.
@SimonCropp we discussed this briefly after triage today.
If you or anyone are willing to send contributions to implement similar functionality we would consider them.
Our stance on in-memory has evolved over time. Although we still see potential pitfalls in anyone assuming that in-memory is going to behave exactly like a real (e.g. relational) database, these specific improvements seem to just make it more useful.
If we took these changes, we would need to also consider the potential breaking impact and decide if we need to mitigate them.
Can someone from the ef team review my implementation and comment if my approach to solving any of those problems is suitable to be pushed into the core code base?
To save me doing a pr that is a flawed approach
@SimonCropp I took a look at the code and I think it would need some changes to be appropriate for the EF Core codebase. In general, these are more like workarounds in a NuGet package, which is great since it let's people get at them easily, but the layering, API surface, and some of the implementation would need to be different to fit into the product architecture. Some examples:
We would of course be super happy if you chose to send PRs for these things, but of course it's a lot more work than just porting the existing code over.
/cc @divega