Skip to content
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

Adding DbSet/IQueryiable helpers to deal with EF Core async and nullable methods #94

Merged
merged 1 commit into from
May 25, 2021
Merged

Conversation

lucasteles
Copy link
Contributor

Proposed Changes

EF Core gives a lot of Linq extensions like FirstOrDefaultAsync and ToListAsync.
The problem with the FirstOrDefault[Async] is the fact that it could return null instead of option which the idiomatic F# option.
So with this PR I'm adding some functions and methods to help to deal with this common cases.

Types of changes

What types of changes does your code introduce to EFCore.FSharp?

  • Bugfix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)

Checklist

  • Build and tests pass locally
  • I have added tests that prove my fix is effective or that my feature works (if appropriate)
  • I have added necessary documentation (if appropriate)

@simon-reynolds simon-reynolds merged commit b9b452b into efcore:master May 25, 2021
@simon-reynolds
Copy link
Collaborator

Hi @lucasteles
Again, thank you for this contribution!

simon-reynolds added a commit that referenced this pull request May 27, 2021
## [5.0.3-beta003] - 2021-05-27

### Added
- Query translation for Option types - [@lucasteles](https://github.com/lucasteles) - #93
- DbSet/IQueryable helpers to deal with EF Core async and nullable methods - [@lucasteles](https://github.com/lucasteles) - #94

- Automatic registration of DesignTimeServices - #86
- DbContextHelpers - curried functions for interacting with DbContext to allow for a more 'native' F# experience
[Unreleased]: v5.0.3-alpha10...HEAD
[5.0.3-alpha10]: https://github.com/efcore/EFCore.FSharp/releases/tag/v5.0.3-alpha10
- DbContextHelpers - curried functions for interacting with DbContext to allow for a more 'native' F# experience
[Unreleased]: v5.0.3-beta001...HEAD
[5.0.3-beta001]: https://github.com/efcore/EFCore.FSharp/releases/tag/v5.0.3-beta001
[5.0.3-alpha10]: https://github.com/efcore/EFCore.FSharp/releases/tag/v5.0.3-alpha10
- Automatic registration of DesignTimeServices - #86
- DbContextHelpers - curried functions for interacting with DbContext to allow for a more 'native' F# experience
[Unreleased]: v5.0.3-alpha10...HEAD
[5.0.3-alpha10]: https://github.com/efcore/EFCore.FSharp/releases/tag/v5.0.3-alpha10
- DbContextHelpers - curried functions for interacting with DbContext to allow for a more 'native' F# experience
[Unreleased]: v5.0.3-beta002...HEAD
[5.0.3-beta002]: https://github.com/efcore/EFCore.FSharp/releases/tag/v5.0.3-beta002
[5.0.3-beta001]: https://github.com/efcore/EFCore.FSharp/releases/tag/v5.0.3-beta001
[5.0.3-alpha10]: https://github.com/efcore/EFCore.FSharp/releases/tag/v5.0.3-alpha10

### Fixed
- Improved code generation for contexts scaffolded from an existing database - #89
- Correct issue with InsertData operations and 2D arrays
- Generate valid code in HasData method
- Fix issue with generated DbContext members in scaffolded code
- Resolved issue with migrations have a missing unit arg to the Up method if no changes in model
- Foreign Key constraints now created correctly
- Fix indentation issue when table has constraints - #75
- Constraints now correctly generated - #72
- Generated Migrations will now always include the System namespace - #70
- Correct issue with InsertData operations and 2D arrays
- Generate valid code in HasData method
- Fix issue with generated DbContext members in scaffolded code
- Resolved issue with migrations have a missing unit arg to the Up method if no changes in model
- Foreign Key constraints now created correctly
- Fix indentation issue when table has constraints - #75
- Constraints now correctly generated - #72
- Generated Migrations will now always include the System namespace - #70
- Correct issue with InsertData operations and 2D arrays
- Generate valid code in HasData method
- Fix issue with generated DbContext members in scaffolded code
- Resolved issue with migrations have a missing unit arg to the Up method if no changes in model
- Foreign Key constraints now created correctly
- Fix indentation issue when table has constraints - #75
- Constraints now correctly generated - #72
- Generated Migrations will now always include the System namespace - #70
- Correct issue with InsertData operations and 2D arrays
- Generate valid code in HasData method
- Fix issue with generated DbContext members in scaffolded code
- Resolved issue with migrations have a missing unit arg to the Up method if no changes in model
- Foreign Key constraints now created correctly
- Fix indentation issue when table has constraints - #75
- Constraints now correctly generated - #72
- Generated Migrations will now always include the System namespace - #70
simon-reynolds added a commit that referenced this pull request Jun 16, 2021
## [5.0.3-beta004] - 2021-06-16

### Added
- Single case union support - [@lucasteles](https://github.com/lucasteles) - #98

- Query translation for Option types - [@lucasteles](https://github.com/lucasteles) - #93
- DbSet/IQueryable helpers to deal with EF Core async and nullable methods - [@lucasteles](https://github.com/lucasteles) - #94
- Automatic registration of DesignTimeServices - #86
- DbContextHelpers - curried functions for interacting with DbContext to allow for a more 'native' F# experience
[Unreleased]: v5.0.3-beta002...HEAD
[5.0.3-beta002]: https://github.com/efcore/EFCore.FSharp/releases/tag/v5.0.3-beta002
[5.0.3-beta001]: https://github.com/efcore/EFCore.FSharp/releases/tag/v5.0.3-beta001
- Automatic registration of DesignTimeServices - #86
- DbContextHelpers - curried functions for interacting with DbContext to allow for a more 'native' F# experience
[Unreleased]: v5.0.3-beta001...HEAD
[5.0.3-beta001]: https://github.com/efcore/EFCore.FSharp/releases/tag/v5.0.3-beta001
- Automatic registration of DesignTimeServices - #86
- DbContextHelpers - curried functions for interacting with DbContext to allow for a more 'native' F# experience
[Unreleased]: v5.0.3-alpha10...HEAD
[5.0.3-alpha10]: https://github.com/efcore/EFCore.FSharp/releases/tag/v5.0.3-alpha10

### Fixed
- Issues with scaffolded code

- Improved code generation for contexts scaffolded from an existing database - #89
- Correct issue with InsertData operations and 2D arrays
- Generate valid code in HasData method
- Fix issue with generated DbContext members in scaffolded code
- Resolved issue with migrations have a missing unit arg to the Up method if no changes in model
- Foreign Key constraints now created correctly
- Fix indentation issue when table has constraints - #75
- Constraints now correctly generated - #72
- Generated Migrations will now always include the System namespace - #70
- Improved code generation for contexts scaffolded from an existing database - #89
- Correct issue with InsertData operations and 2D arrays
- Generate valid code in HasData method
- Fix issue with generated DbContext members in scaffolded code
- Resolved issue with migrations have a missing unit arg to the Up method if no changes in model
- Foreign Key constraints now created correctly
- Fix indentation issue when table has constraints - #75
- Constraints now correctly generated - #72
- Generated Migrations will now always include the System namespace - #70
- Correct issue with InsertData operations and 2D arrays
- Generate valid code in HasData method
- Fix issue with generated DbContext members in scaffolded code
- Resolved issue with migrations have a missing unit arg to the Up method if no changes in model
- Foreign Key constraints now created correctly
- Fix indentation issue when table has constraints - #75
- Constraints now correctly generated - #72
- Generated Migrations will now always include the System namespace - #70
simon-reynolds added a commit that referenced this pull request Aug 9, 2021
## [5.0.3-beta005] - 2021-08-09

### Fixed
- Fix formatting of Nullable parameters - [@LiteracyFanatic](https://github.com/LiteracyFanatic) - #106
- Handle nullablility correctly in snapshot generation - #107

- Issues with scaffolded code
- Improved code generation for contexts scaffolded from an existing database - #89
- Correct issue with InsertData operations and 2D arrays
- Generate valid code in HasData method
- Fix issue with generated DbContext members in scaffolded code
- Resolved issue with migrations have a missing unit arg to the Up method if no changes in model
- Foreign Key constraints now created correctly
- Fix indentation issue when table has constraints - #75
- Constraints now correctly generated - #72
- Generated Migrations will now always include the System namespace - #70

### Added
- Single case union support - [@lucasteles](https://github.com/lucasteles) - #98
- Query translation for Option types - [@lucasteles](https://github.com/lucasteles) - #93
- DbSet/IQueryable helpers to deal with EF Core async and nullable methods - [@lucasteles](https://github.com/lucasteles) - #94
- Automatic registration of DesignTimeServices - #86
- DbContextHelpers - curried functions for interacting with DbContext to allow for a more 'native' F# experience
simon-reynolds added a commit that referenced this pull request Aug 17, 2021
## [5.0.3-beta006] - 2021-08-17

### Fixed
- Removed `DevelopmentDependency=true` as it was setting `IncludeAssets` to undesirable values when restoring package - #108

- Fix formatting of Nullable parameters - [@LiteracyFanatic](https://github.com/LiteracyFanatic) - #106
- Handle nullablility correctly in snapshot generation - #107
- Issues with scaffolded code
- Improved code generation for contexts scaffolded from an existing database - #89
- Correct issue with InsertData operations and 2D arrays
- Generate valid code in HasData method
- Fix issue with generated DbContext members in scaffolded code
- Resolved issue with migrations have a missing unit arg to the Up method if no changes in model
- Foreign Key constraints now created correctly
- Fix indentation issue when table has constraints - #75
- Constraints now correctly generated - #72
- Generated Migrations will now always include the System namespace - #70
- Issues with scaffolded code
- Improved code generation for contexts scaffolded from an existing database - #89
- Correct issue with InsertData operations and 2D arrays
- Generate valid code in HasData method
- Fix issue with generated DbContext members in scaffolded code
- Resolved issue with migrations have a missing unit arg to the Up method if no changes in model
- Foreign Key constraints now created correctly
- Fix indentation issue when table has constraints - #75
- Constraints now correctly generated - #72
- Generated Migrations will now always include the System namespace - #70
[Unreleased]: v5.0.3-beta005...HEAD
[5.0.3-beta005]: https://github.com/efcore/EFCore.FSharp/releases/tag/v5.0.3-beta005

### Added
- Single case union support - [@lucasteles](https://github.com/lucasteles) - #98
- Query translation for Option types - [@lucasteles](https://github.com/lucasteles) - #93
- DbSet/IQueryable helpers to deal with EF Core async and nullable methods - [@lucasteles](https://github.com/lucasteles) - #94
- Automatic registration of DesignTimeServices - #86
- DbContextHelpers - curried functions for interacting with DbContext to allow for a more 'native' F# experience
- Single case union support - [@lucasteles](https://github.com/lucasteles) - #98
- Query translation for Option types - [@lucasteles](https://github.com/lucasteles) - #93
- DbSet/IQueryable helpers to deal with EF Core async and nullable methods - [@lucasteles](https://github.com/lucasteles) - #94
- Automatic registration of DesignTimeServices - #86
- DbContextHelpers - curried functions for interacting with DbContext to allow for a more 'native' F# experience
simon-reynolds added a commit that referenced this pull request Oct 16, 2021
## [5.0.3] - 2021-10-16

- Translations for `isNull` to be evaluated in-database - #114

### Fixed
- Removed `DevelopmentDependency=true` as it was setting `IncludeAssets` to undesirable values when restoring package - #108
- Fix formatting of Nullable parameters - [@LiteracyFanatic](https://github.com/LiteracyFanatic) - #106
- Handle nullablility correctly in snapshot generation - #107
- Issues with scaffolded code
- Improved code generation for contexts scaffolded from an existing database - #89
- Correct issue with InsertData operations and 2D arrays
- Generate valid code in HasData method
- Fix issue with generated DbContext members in scaffolded code
- Resolved issue with migrations have a missing unit arg to the Up method if no changes in model
- Foreign Key constraints now created correctly
- Fix indentation issue when table has constraints - #75
- Constraints now correctly generated - #72
- Generated Migrations will now always include the System namespace - #70
- Issues with scaffolded code
- Improved code generation for contexts scaffolded from an existing database - #89
- Correct issue with InsertData operations and 2D arrays
- Generate valid code in HasData method
- Fix issue with generated DbContext members in scaffolded code
- Resolved issue with migrations have a missing unit arg to the Up method if no changes in model
- Foreign Key constraints now created correctly
- Fix indentation issue when table has constraints - #75
- Constraints now correctly generated - #72
- Generated Migrations will now always include the System namespace - #70
[Unreleased]: v5.0.3-beta005...HEAD
[5.0.3-beta005]: https://github.com/efcore/EFCore.FSharp/releases/tag/v5.0.3-beta005

### Added
- Single case union support - [@lucasteles](https://github.com/lucasteles) - #98
- Query translation for Option types - [@lucasteles](https://github.com/lucasteles) - #93
- DbSet/IQueryable helpers to deal with EF Core async and nullable methods - [@lucasteles](https://github.com/lucasteles) - #94
- Automatic registration of DesignTimeServices - #86
- DbContextHelpers - curried functions for interacting with DbContext to allow for a more 'native' F# experience
- Single case union support - [@lucasteles](https://github.com/lucasteles) - #98
- Query translation for Option types - [@lucasteles](https://github.com/lucasteles) - #93
- DbSet/IQueryable helpers to deal with EF Core async and nullable methods - [@lucasteles](https://github.com/lucasteles) - #94
- Automatic registration of DesignTimeServices - #86
- DbContextHelpers - curried functions for interacting with DbContext to allow for a more 'native' F# experience
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

2 participants