Лучший способ сохранить тип класса в базе данных?

Какой хороший способ обозначитьтип" в базе данных?

У меня есть базовый классAction который наследуется многочисленными дочерними классами.Action имеет членов, как,IdName и т.д. все, что соответствует эквивалентным столбцам в таблице в базе данных под названиемaction, Такaction Стол выглядит так:

id | name | type 

type столбец обозначает, что это за действие. В моем коде они соответствуют дочерним классам, происходящим от родительскогоAction, Теперь, как мне сохранитьтип класса кТип поля в базе данных?

Столбец типа в БД может иметь любой тип данных.

Опции:

Сохранитьaction.GetType().ToString() как строка в дб. И получить тип действия из db обратно, преобразовав строковое представление типа в его исходный тип, используя отражение.Но это будет проблематично, если имена классов изменятся в будущем.

Создайте перечисление для обозначения каждого дочернего класса и украсьте егоTypeAttribute, что-то вроде:

public abstract class Action
{
    public enum Kind 
    {
        [Type(typeof(ControlAction))]
        ControlAction = 1, 

        [Type(typeof(UpdateAction))]
        UpdateAction = 2, 

        etc 
    }

    public abstract Kind ActionType { get; }
}

public class ControlAction : Action { public override Kind ActionType { get { return Kind.ControlAction; } } }
public class UpdateAction : Action { public override Kind ActionType { get { return Kind.UpdateAction; } } }
//etc

Это выглядит хорошо, за исключением того, что для каждого класса с этого момента я должен создать перечисление. И кажется, что слишком много работы предстоит сделать.

Создайте отдельную статическую хеш-таблицу который связывает класс сint значение.Может быть немного нечитаемым.

Есть ли лучшее решение для этого?

Ответы на вопрос(3)

Ваш ответ на вопрос