Использование атрибута flags на уровне доступа к данным для генерации побитового запроса SQL - PullRequest
1 голос
/ 05 июля 2011

У меня есть функция в моем слое доступа к данным.Эта функция принимает enum (с атрибутом [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);
}

Как я могу это сделать?

...