LINQ-to-SQL обычно обрабатывает прямые целочисленные карты и карты точных строк (имен) (примечание: чувствительно к регистру). Значение: напишите ваше перечисление где-нибудь, и в конструкторе установите тип свойства как полное имя перечисления: Some.Namespace.MyEnum
. Это обычно должно работать.
Для нетривиальных отображений (например, когда столбец представляет собой varchar со значениями в смешанном регистре или что-то вроде «В процессе» [обратите внимание на пробел]), вам придется оставить свойство хранилища как int
/ varchar
(и т. Д.) И сопоставьте его вручную. Обычно я делаю это, помечая его как private и называя его FooStorage
, и добавляя свойство отображения в частичный класс:
partial class MyType {
public MyEnum Foo {
get {... mapping logic reading from FooStorage...}
set {... mapping logic, updating FooStorage...}
}
}
Единственная проблема заключается в том, что запросы LINQ будут работать только со свойством storage (а не со свойством).