Eli*_*eth 0 c# entities value-objects
实体"schoolyear"具有可配置的可见工作日,在时间规划器中可见或不可见.
我现在看到2个posibilites来保存可见的工作日.
要么我建立N:M关系:N schoolyear有M VisibleWeekDays
或者我将可见的周日放在逗号分隔的字段中:"0,2,5"
这些数字是DayOfWeek枚举中的枚举值.
我是否应该真正去创建另外两个表(结点+ VisibleWeekDay表)的开销方式,只是为了在一个字段中保存一天的索引?
你会如何保存那些可见的工作日?
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;
Run Code Online (Sandbox Code Playgroud)
这样您就可以保持理智和查询能力.
要在SQL中查询:
DECLARE @bitmast INT;
SET @bitmask = 64 | 1 | 16; -- sun, mon, fri
SELECT * FROM tbl
WHERE DayOfWeekBitMask & @bitmask = @bitmask;
Run Code Online (Sandbox Code Playgroud)
要使用LINQ to Entities进行查询:
int bitmask = DayOfWeek.Sun | DayOfWeek.Mon |DayOfWeek.Fri;
var query = Context.tbl.Where(r => (r.DayOfWeekBitMask & bitmask) == bitmask);
Run Code Online (Sandbox Code Playgroud)
坚持:
int bitmask = DayOfWeek.Sun | DayOfWeek.Mon |DayOfWeek.Fri;
var item = Context.tbl.First();
item.DayOfWeekBitMask = bitmask;
Context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
311 次 |
| 最近记录: |