我正在尝试为我的一个ASP.NET MVC模型获得一个Dictionary数据结构。基本上,我想将设置的哈希映射作为键值对。我的代码类似于:
[ActiveRecord]
public class Blog extends ActiveRecordBase<Blog> {
[Property]
public IDictionary<string, string> Settings { get; set; }
}
但是,我对如何实现这一点感到茫然。我假设我需要像BlogSettings这样的数据库表,其中包含键和值列;但我不清楚如何在没有的情况下创建另一个模型。
NHibernate / ActiveRecord抱怨说:
A HasMany with type Map requires that you specify an 'Index', use the Index property Blog.Settings
我尝试添加虚拟索引(因为我不清楚如何使用ActiveRecord添加标记),如下所示:
[Property(Index="")]
public IDictionary<string, string> Settings { get; set; }
我没想到会有任何变化,但我得到了第二个不同的错误消息:
ActiveRecord tried to infer details about the relation Blog.Settings but it could not find information about the specified target type System.String. If you have mapped a Collection or Dictionary of value types, please make sure you have specified the Table property
因此我的问题是:我需要(代码/数据库明智)将字符串键/值对字典设置为单个字段来设置我的ActiveRecord模型,而无需创建新类来封装密钥 - 值对?
答案 0 :(得分:0)
您需要IUserType
。 Here's one that implements a IUserType
与您的需求非常相似。
然后使用ColumnType
属性的[Property]
属性来引用IUserType
的完全限定类型名称。