Существует множество обходных путей для отсутствующей поддержки перечислений в Entity Framework 4.0. Из всех мне больше всего нравится этот:
http://blogs.msdn.com/b/alexj/archive/2009/06/05/tip-23-how-to-fake-enums-in-ef-4.aspx?PageIndex=2#comments
Этот обходной путь позволяет вам использовать перечисления в ваших запросах LINQ, что мне и нужно. Однако у меня есть проблема с этим обходным путем. Я получаю для каждого сложного типа, я использую новый частичный автоматически сгенерированный класс. Поэтому код больше не компилируется, потому что у меня уже есть класс-оболочка с этим именем в том же пространстве имен, которое преобразует между целым числом в базе данных и перечислением в моих классах POCO. Если я сделаю свою обертку частичным классом, код все равно не скомпилируется, поскольку теперь он содержит два свойства с тем же именем «Value». Единственная возможность - удалять свойство Value вручную каждый раз, когда я генерирую классы POCO, потому что модель DB изменилась (что на этапе разработки происходит очень часто).
Знаете ли вы, как предотвратить генерацию частичного класса из сложного свойства при каждом изменении модели EF?
Можете ли вы порекомендовать мне другие обходные пути, поддерживающие перечисления в запросах LINQ?