Fluent nhibernate Fluent NHibernate和带有索引器映射的类
如何使用Fluent映射将类属性集映射到Fluent NHibernateFluent nhibernate Fluent NHibernate和带有索引器映射的类,fluent-nhibernate,nhibernate-mapping,Fluent Nhibernate,Nhibernate Mapping,如何使用Fluent映射将类属性集映射到Fluent NHibernate public class AttributeSet : DictionaryBase { private readonly Dictionary<string, object> _cache; public AttributeSet() { _cache = new Dictionary<string, object>(); } publ
public class AttributeSet : DictionaryBase
{
private readonly Dictionary<string, object> _cache;
public AttributeSet()
{
_cache = new Dictionary<string, object>();
}
public object this[string index]
{
get
{
return _cache[index];
}
set
{
_cache[index] = value;
}
}
}
public class Entity
{
protected Entity()
{
Attributes = new AttributeSet();
}
public virtual int Id { get; set; }
public virtual string Label { get; set; }
public virtual string Description { get; set; }
public virtual DateTime CreatedDate { get; set; }
public virtual AttributeSet Attributes { get; set; }
}
公共类属性集:字典库
{
专用只读字典\u缓存;
公共属性集()
{
_cache=新字典();
}
公共对象[字符串索引]
{
得到
{
返回_缓存[索引];
}
设置
{
_缓存[索引]=值;
}
}
}
公共类实体
{
受保护实体()
{
属性=新属性集();
}
公共虚拟整数Id{get;set;}
公共虚拟字符串标签{get;set;}
公共虚拟字符串描述{get;set;}
公共虚拟日期时间CreatedDate{get;set;}
公共虚拟属性集属性{get;set;}
}
我认为没有直接映射索引器的方法,但是您可以公开底层字典类型并映射它
如果不想将字典公开为公共,可以将其映射为私有属性,而不是作为公共属性。对于映射字典
一个例子可能是
HasMany<object>(Reveal.Member<AttributeSet>("Cache"))
.KeyColumn("AttributeSetId")
.AsMap<string>(idx => idx.Column("Index"), elem => elem.Column("Value"))
.Access.CamelCaseField(Prefix.Underscore)
HasMany(leaver.Member(“缓存”))
.KeyColumn(“AttributeSetId”)
.AsMap(idx=>idx.Column(“索引”),elem=>elem.Column(“值”))
.Access.CamelCaseField(前缀.下划线)
在字典中映射对象类型可能很有趣,我不知道NHibernate是否能够将其直接转换为基础数据库类型。我认为没有办法直接映射索引器,但您可以公开基础字典类型并将其映射 如果不想将字典公开为公共,可以将其映射为私有属性,而不是作为公共属性。对于映射字典 一个例子可能是
HasMany<object>(Reveal.Member<AttributeSet>("Cache"))
.KeyColumn("AttributeSetId")
.AsMap<string>(idx => idx.Column("Index"), elem => elem.Column("Value"))
.Access.CamelCaseField(Prefix.Underscore)
HasMany(leaver.Member(“缓存”))
.KeyColumn(“AttributeSetId”)
.AsMap(idx=>idx.Column(“索引”),elem=>elem.Column(“值”))
.Access.CamelCaseField(前缀.下划线)
在字典中映射对象类型可能很有趣,我不知道NHibernate是否能够将其直接转换为底层数据库类型