EF и enum
От: snaphold  
Дата: 31.05.11 15:39
Оценка:
Объясните пожалуйста почему такой

кусок


Func<...> setFileOperation = fo => {}



model.FileLogEntitySets.ToList().Select(f => new FileInfoDTO(){OperationType = setFileOperation(f.OperationType)});


работает,

а вот такой не работает?

model.FileLogEntitySets.Select(f => new FileInfoDTO(){OperationType = setFileOperation(f.OperationType)});



OperationType — типа enum!
Re: EF и enum
От: scale_tone Норвегия https://scale-tone.github.io/
Дата: 31.05.11 16:17
Оценка: 2 (1)
Здравствуйте, snaphold, Вы писали:

S>а вот такой не работает?


S>
S>model.FileLogEntitySets.Select(f => new FileInfoDTO(){OperationType = setFileOperation(f.OperationType)});
S>


S>OperationType — типа enum!


Наверно, по стандартной причине: model.FileLogEntitySets.Select() хочет преобразоваться в Expression и отправиться на SQL Server выполняться. Но не может, потому что предикат отправить на SQL Server выполняться невозможно.
А model.FileLogEntitySets.ToList().Select() происходит уже на клиенте — и все работает.
Re[2]: EF и enum
От: snaphold  
Дата: 31.05.11 16:25
Оценка:
Здравствуйте, scale_tone, Вы писали:

_>Здравствуйте, snaphold, Вы писали:


S>>а вот такой не работает?


S>>
S>>model.FileLogEntitySets.Select(f => new FileInfoDTO(){OperationType = setFileOperation(f.OperationType)});
S>>


S>>OperationType — типа enum!


_>Наверно, по стандартной причине: model.FileLogEntitySets.Select() хочет преобразоваться в Expression и отправиться на SQL Server выполняться. Но не может, потому что предикат отправить на SQL Server выполняться невозможно.

_>А model.FileLogEntitySets.ToList().Select() происходит уже на клиенте — и все работает.

т.е. toList нормально в данном случае?
Re[3]: EF и enum
От: _FRED_ Черногория
Дата: 31.05.11 18:19
Оценка:
Здравствуйте, snaphold, Вы писали:

S>т.е. toList нормально в данном случае?


AsEnumerable() более нормально.
Help will always be given at Hogwarts to those who ask for it.
Re[3]: EF и enum
От: scale_tone Норвегия https://scale-tone.github.io/
Дата: 31.05.11 19:59
Оценка:
Здравствуйте, snaphold, Вы писали:

S>т.е. toList нормально в данном случае?


Если я правильно догадываюсь о сути задачи, Вы хотите превратить справочную таблицу в БД в свойство типа enum у DTO. Задача известная и в лоб не решаемая (нет поддержки enum в EF на данный момент).
Проще всего свойство FileLogEntity.OperationType (которое непосредственно маппится на поле в таблице) сделать private и добавить другое, публичное свойство, уже перечислимого типа. В его геттере и сеттере преобразовывать перечислимый тип в тип поля в таблице и обратно.
Не очень кошерно, зато быстро.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.