У меня есть Enum:Как правильно установить значение Enum?
[DataContract(Namespace = Namespace.Default)]
public enum CancelledStatus
{
[EnumMember]
NotCancelled = 0,
[EnumMember]
CancelRequestBySystem = 1,
[EnumMember]
CancelRequestByUser = 2,
[EnumMember]
Cancelled = 3
}
И в нескольких местах у меня есть вторая вещь в классах:
[DataMember]
public virtual int CancelledStatusId { get; set; }
[DataMember]
public virtual CancelledStatus Cancelled
{
get
{
return (CancelledStatus)this.CancelledStatusId;
}
set
{
this.CancelledStatusId = (int)value;
}
}
Это сделано, чтобы написать INT значение перечисления в базе данных (с помощью NHibernate).
<property name="CancelledStatusId" column="CancelledStatus"/>
МОЯ ПРОБЛЕМА в том, что я могу записать данные в базу данных, НО я не могу получить его оттуда, потому что я начал получать ошибки:
The type 'SpecialEntities.CancelledStatus' has no settable properties.
я могу получить данные из база данных IF Я удаляю set
от CancelledStatus Cancelled
, но если я это сделаю, я не могу записать данные в базу данных.
Независимо от того, как я смотрю на это, я не могу найти причину этой проблемы вообще, и я не могу ее понять (у меня есть severan Enum для разных таблиц и классов. Они работают, и они выполняются точно так же, как и CancelledStatus
).
Что я делаю неправильно?
И что он будет хранить в базе данных? Значение int или строка? В любом случае ... проблема с типом «SpecialEntities.CancelledStatus» не имеет настраиваемых свойств. - все равно беспокоить меня много, не могу понять, почему это появилось. –
Олег Я расширил свой ответ ... мы можем отобразить как 1) целое число, так и 2) перечисление. Один из этих значений ДОЛЖЕН быть только в режиме чтения. * (это зависит от вас, но один msut имеет 'insert =" false "update =" false "') * Таким образом, мы можем получить от DB * (NHibernate сделает это) * оба значения загружены и подготовлены для нас. При создании сущности * (той, которая редактируется путем сопоставления) требуется только одно значение. * Помогает ли это? –
Момент в том, что мне не нужно хранить Enum в базе данных, и его Id уже хранится как int. Проблема в том, что по какой-то причине int не преобразуется в Enum, и в результате я получаю Type 'SpecialEntities.CancelledStatus' не имеет устанавливаемых свойств. (по мере того как я вижу). И, как я уже сказал, у меня есть несколько Enum, которые работают и выглядят точно так же, как этот, но только это дает мне ошибку для свойства set –