我有一个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。它们正在工作,它们完全按照{ {1}})。
我做错了什么?
答案 0 :(得分:0)
我映射enum
的方式是这样的:
// the integer
<property name="CancelledStatusId" column="CancelledStatus"/>
// the enum
<property name="Cancelled" column="CancelledStatus"
type="MyNamespace.CancelledStatus, MyLib"
insert="false" update="false" />
MyNamespace
和MyLib
应该替换为您自己的...... NHibernate将能够使用正确的enum
值初始化此类属性
然后可以像这样映射Enum属性:
[DataMember]
public virtual CancelledStatus Cancelled { get; set }
因为NHibernate将为任何加载的值提供实例化的enum