NHibernate:使用字符串映射枚举集合并存储为 nvarchar
NHibernate: map collection of enums using string and store as nvarchar
我有一个枚举类型:
public enum CommunicationType
{
[Description("Callback to client")]
Callback
}
在class Partner
:
中用作IList<CommunicationType>
的属性
public class Partner
{
public virtual long Id { get; set; }
public virtual IList<CommunicationType> CommunicationTypes { get; set; }
}
我的 PartnerMap
class 看起来像这样:
public class PartnerMap : ClassMap<Partner>
{
public PartnerMap()
{
Schema("tm");
Table("Partner");
Id(x => x.Id);
HasMany(x => x.CommunicationTypes)
.Schema("tm")
.Table("PartnerCommunicationType")
.KeyColumn("PartnerId")
.Element("CommunicationType");
}
}
Partner
和 CommunicationType
之间的一对多关系我存储在 table [tm].[PartnerCommunicationType]
:
PartnerId bigint
CommunicationType nvarchar(256)
我的最终目标是什么:将枚举存储为 nvarchar 值并将其从 table 映射到 CommunicationType
列的 IList<CommunicationType>
table [tm].[PartnerCommunicationTypes
.
我的问题是什么:字符串格式不正确。
我尝试使用 Map(x=>x.CommunicationType)
将 CommunicationType
映射为单个 属性,这很好用,但我不能用集合来做到这一点。
有没有一种方法可以映射枚举集合并从 nvarchar 映射它?
编辑: 这个答案应该对我有帮助 但我不明白如何使用 FluentNHibernate 设置类型。
这是答案:Fluent NHibernate - How map an IList<Enum> as list of strings
您必须将 NHibernate.Type.EnumStringType<T>
与您的通用类型一起使用:
HasMany(x => x.CommunicationTypes)
.Schema("tm")
.Table("PartnerCommunicationType")
.KeyColumn("PartnerId")
.Element("CommunicationType", part => part.Type<EnumStringType<CommunicationType>>());
我有一个枚举类型:
public enum CommunicationType
{
[Description("Callback to client")]
Callback
}
在class Partner
:
IList<CommunicationType>
的属性
public class Partner
{
public virtual long Id { get; set; }
public virtual IList<CommunicationType> CommunicationTypes { get; set; }
}
我的 PartnerMap
class 看起来像这样:
public class PartnerMap : ClassMap<Partner>
{
public PartnerMap()
{
Schema("tm");
Table("Partner");
Id(x => x.Id);
HasMany(x => x.CommunicationTypes)
.Schema("tm")
.Table("PartnerCommunicationType")
.KeyColumn("PartnerId")
.Element("CommunicationType");
}
}
Partner
和 CommunicationType
之间的一对多关系我存储在 table [tm].[PartnerCommunicationType]
:
PartnerId bigint
CommunicationType nvarchar(256)
我的最终目标是什么:将枚举存储为 nvarchar 值并将其从 table 映射到 CommunicationType
列的 IList<CommunicationType>
table [tm].[PartnerCommunicationTypes
.
我的问题是什么:字符串格式不正确。
我尝试使用 Map(x=>x.CommunicationType)
将 CommunicationType
映射为单个 属性,这很好用,但我不能用集合来做到这一点。
有没有一种方法可以映射枚举集合并从 nvarchar 映射它?
编辑: 这个答案应该对我有帮助 但我不明白如何使用 FluentNHibernate 设置类型。
这是答案:Fluent NHibernate - How map an IList<Enum> as list of strings
您必须将 NHibernate.Type.EnumStringType<T>
与您的通用类型一起使用:
HasMany(x => x.CommunicationTypes)
.Schema("tm")
.Table("PartnerCommunicationType")
.KeyColumn("PartnerId")
.Element("CommunicationType", part => part.Type<EnumStringType<CommunicationType>>());