使用数据访问层中的flags属性生成按位SQL查询

时间:2011-07-05 11:49:20

标签: c# sql-server enums bit-manipulation

我的数据访问层有一个功能。此函数将枚举(其上具有[Flags]属性)作为其唯一参数。

[Flags]
public enum ItemTags { Browsable = 2, InMenu = 4 }

public List<Item> GetAllItems(ItemTags flags)
{
    // Here I should create the SQL bitwise query.
}

在这个函数中,我应该创建一个按位SQL查询,如:

select * from tableName where columnName & 2 = 2 and columnName & 4 = 4

在我的业务层,我想使用该功能。但是有许多可能的方法来使用这些标记和标记。其中一些功能可能是:

public List<Item> GetItemsOfMenu()
{
   return repository.GetAllItems(ItemTags.InMenu);
}

public List<Item> GetBrowsableItems()
{
   return repository.GetAllItems(ItemTags.Browsable);
}

public List<Item> GetBrowsableMenuItems()
{
   return repository.GetAllItems(ItemTags.Browsable & ItemTags.InMenu);
}

我该怎么做?

0 个答案:

没有答案