Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit 3ff0e16

Browse files
committed
Merge pull request #410 from miiihi/master
Querying DB with conditions on Flags enum fields fails
2 parents 5757550 + e210f22 commit 3ff0e16

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed

tests/ServiceStack.OrmLite.Tests/EnumTests.cs

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,58 @@ public void Updates_enum_flags_with_int_value()
162162
}
163163
}
164164

165+
[Test]
166+
public void CanQueryByEnumValue_using_select_with_expression_enum_flags()
167+
{
168+
using (var db = OpenDbConnection())
169+
{
170+
db.DropAndCreateTable<TypeWithFlagsEnum>();
171+
db.Save(new TypeWithFlagsEnum { Id = 1, Flags = FlagsEnum.FlagOne });
172+
db.Save(new TypeWithFlagsEnum { Id = 2, Flags = FlagsEnum.FlagOne });
173+
db.Save(new TypeWithFlagsEnum { Id = 3, Flags = FlagsEnum.FlagTwo });
174+
175+
var results = db.Select<TypeWithFlagsEnum>(q => q.Flags == FlagsEnum.FlagOne);
176+
db.GetLastSql().Print();
177+
Assert.That(results.Count, Is.EqualTo(2));
178+
results = db.Select<TypeWithFlagsEnum>(q => q.Flags == FlagsEnum.FlagTwo);
179+
db.GetLastSql().Print();
180+
Assert.That(results.Count, Is.EqualTo(1));
181+
}
182+
}
183+
184+
[Test]
185+
public void CanQueryByEnumValue_using_select_with_string_enum_flags()
186+
{
187+
using (var db = OpenDbConnection())
188+
{
189+
db.DropAndCreateTable<TypeWithFlagsEnum>();
190+
db.Save(new TypeWithFlagsEnum { Id = 1, Flags = FlagsEnum.FlagOne });
191+
db.Save(new TypeWithFlagsEnum { Id = 2, Flags = FlagsEnum.FlagOne });
192+
db.Save(new TypeWithFlagsEnum { Id = 3, Flags = FlagsEnum.FlagTwo });
193+
194+
var target = db.SelectFmt<TypeWithFlagsEnum>(
195+
"Flags".SqlColumn() + " = {0}", FlagsEnum.FlagOne);
196+
db.GetLastSql().Print();
197+
Assert.AreEqual(2, target.Count());
198+
}
199+
}
200+
201+
[Test]
202+
public void CanQueryByEnumValue_using_where_with_AnonType_enum_flags()
203+
{
204+
using (var db = OpenDbConnection())
205+
{
206+
db.DropAndCreateTable<TypeWithFlagsEnum>();
207+
db.Save(new TypeWithFlagsEnum { Id = 1, Flags = FlagsEnum.FlagOne });
208+
db.Save(new TypeWithFlagsEnum { Id = 2, Flags = FlagsEnum.FlagOne });
209+
db.Save(new TypeWithFlagsEnum { Id = 3, Flags = FlagsEnum.FlagTwo });
210+
211+
var target = db.Where<TypeWithFlagsEnum>(new { Flags = FlagsEnum.FlagOne });
212+
db.GetLastSql().Print();
213+
Assert.AreEqual(2, target.Count());
214+
}
215+
}
216+
165217
[Test]
166218
public void Does_save_Enum_with_label_by_default()
167219
{

0 commit comments

Comments
 (0)