DBフィールドでのコンマの分離は私の気持ちを傷つけます。ビットマスクについて考えてみましょう。
[Flags]
public enum DayOfWeek
{
Undefined = 0,
Mon = 1,
Tue = 2,
Wed = 4,
Thu = 8,
Fri = 16,
Sat = 32,
Sun = 64
}
DayOfWeek bitmask = DayOfWeek.Mon | DayOfWeek.Wed | DayOfWeek.Sat;
このようにして、健全性とクエリ機能を維持します。
SQLでこれを照会するには:
DECLARE @bitmast INT;
SET @bitmask = 64 | 1 | 16; -- sun, mon, fri
SELECT * FROM tbl
WHERE DayOfWeekBitMask & @bitmask = @bitmask;
LINQ to Entitiesを使用してこれをクエリするには:
int bitmask = DayOfWeek.Sun | DayOfWeek.Mon |DayOfWeek.Fri;
var query = Context.tbl.Where(r => (r.DayOfWeekBitMask & bitmask) == bitmask);
持続するには:
int bitmask = DayOfWeek.Sun | DayOfWeek.Mon |DayOfWeek.Fri;
var item = Context.tbl.First();
item.DayOfWeekBitMask = bitmask;
Context.SaveChanges();