ASP.NET MVC3 + ActiveRecord + HasMany + Dictionary

时间:2011-04-30 23:27:12

标签: nhibernate dictionary castle-activerecord

我正在尝试为我的一个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模型,而无需创建新类来封装密钥 - 值对?

1 个答案:

答案 0 :(得分:0)

您需要IUserTypeHere's one that implements a IUserType与您的需求非常相似。

然后使用ColumnType属性的[Property]属性来引用IUserType的完全限定类型名称。