EasyRepository.EFCore
EasyRepository.EFCore copied to clipboard
✨ [FEATURE] Add 'Enum.AsNoTracking' to all methods instead of using bool values
Summary
I would like to add an overload that takes Enum.AsNoTracking
to all of the methods. For example, currently there might be a method such as this:
I would like to add an overload that takes an enum
instead of bool
In this enhancement I suggest we:
- Add the overload parameter, and eventually in later versions remove the
bool
parameter - Add the overload parameter and also remove the
bool
parameter
What do you suggest?
Advantage
Explicit parameters help the developer. using a bool of true
or false
can mean anything. The developer must look at the xml
notes in order to see "Ah yes... this is for change tracking"
Here are some articles about it:
- https://softwareengineering.stackexchange.com/a/147983
- https://www.reddit.com/r/programming/comments/g9sxyj/dont_use_boolean_arguments_use_enums/
- https://betterprogramming.pub/dont-use-boolean-arguments-use-enums-c7cd7ab1876a
Additional context I will need your advice and suggestions on naming the classes and properties.
I suggest these, please let me know your input and feel free to rename or re-design
Enum
public enum EfTrackingOptions
{
/// <summary>
/// Disables EfCore change tracking
/// </summary>
AsNoTracking,
/// <summary>
/// Enables EfCore Change Tracking
/// </summary>
WithTracking
}
Extension Method
internal static class EfTrackingOptionExtensions
{
public static bool HasNoTracking(this EfTrackingOptions options)
{
return options == EfTrackingOptions.AsNoTracking;
}
}
Outstanding Questions & Input required
- Should we do option 1 of add the overload, and not remove the
bool
, or option 2 of add the overload and remove thebool
parameter - Naming suggestions of
enum class name and property names
- Naming suggestions of
extension method class name and method name