I have an Enum with [Flags] attribute like this:
[Flags]
public enum FlagStatus
{
Value1 = 1
, Value2 = 2
, Value3 = 4
}
And my query for EF like this:
x => x.Status.HasFlag(flagStatus)
Now if I set the flagStatus = FlagStatus.Value1 the query works fine since I set value to 1).
@__request_Status_0 = 1
WHERE ([o].[StatusId] & @__request_Status_0) = @__request_Status_0)
But if I set it to flagStatus = FlagStatus.Value1 | FlagStatus.Value3 the query returns no results as the translated SQL looks like this:
@__request_Status_0 = 5
WHERE ([o].[StatusId] & @__request_Status_0) = @__request_Status_0)
And since that's is not a valid Id int the Status field no results are returned.
So the question now is this: Isn't .HasFlag supposed to be supported by .Net5 EF or is bitwise operation for some reason limited to one value? And if so why have bitwise operations support at all?
I probably missed something, but I just don't see it.