Configuration 如何使用Fluent NHibernate自动映射映射词典?

Configuration 如何使用Fluent NHibernate自动映射映射词典?,configuration,fluent-nhibernate,dictionary,automapping,Configuration,Fluent Nhibernate,Dictionary,Automapping,我有一个这样的实体: public class Land { public virtual IDictionary<string, int> Damages { get; set; } // and other properties } 有人能告诉我我做错了什么吗?此外,这只是一个简单的例子。我有比这本多得多的字典。发现了一些关于这本书的痕迹。一些痕迹,那 仍在调查中。:) (还没有测试) 因此,在您的情况下,它应该是=> public class LandMap

我有一个这样的实体:

public class Land
{
    public virtual IDictionary<string, int> Damages { get; set; }
    // and other properties
}

有人能告诉我我做错了什么吗?此外,这只是一个简单的例子。我有比这本多得多的字典。

发现了一些关于这本书的痕迹。一些痕迹,那

仍在调查中。:)


(还没有测试)

因此,在您的情况下,它应该是=>

public class LandMap : ClassMap<Land>
{
    public LandMap()
    {
        (...)

        HasMany(x => x.Damages)
            .WithTableName("Damages")
            .KeyColumnNames.Add("LandId")
            .Cascade.All()
            .AsMap<string>(
                index => index.WithColumn("DamageType").WithType<string>(),
                element => element.WithColumn("Amount").WithType<int>()
            );
    }
}
public-class-LandMap:ClassMap
{
公共地图()
{
(...)
有许多(x=>x.5)
.WithTableName(“损害赔偿”)
.KeyColumnNames.Add(“LandId”)
.Cascade.All()
.AsMap(
index=>index.WithColumn(“损坏类型”).WithType(),
element=>element.WithColumn(“金额”).WithType()
);
}
}

请记住-它应该。我没有对它进行测试。

使用NHibernate是不可能的。

一个可能的解决方法,理论上应该可以使用自动映射:

public class DamagesDictionary : Dictionary<string, int>
{
}

或者一个更通用的方法

public class StringKeyedDictionary<T> : Dictionary<string, T>
{
}
公共类StringKeyedDictionary:字典
{
}
土地注册处

public class Land
{
   public virtual DamagesDictionary Damages { get; set; }
   // and other properties
}
public class Land
{
   public virtual StringKeyedDictionary<int> Damages { get; set; }
   // and other properties
}
公共类土地
{
公共虚拟StringKeyedDictionary损坏{get;set;}
//及其他物业
}

这是用于流畅映射的。我正在寻找一种可以自动映射的工具,因为我在我所有的实体中都有大约50个字典。。。很抱歉不知何故没有注意到
自动映射
。我来看看。:)您的意思是说这在Fluent NHibernate自动映射、Fluent NHibernate作为一个整体(也指Fluent映射)或NHibernate本身是不可能的吗?NHibernate本身。我不知道目前有什么ORM可以自动映射字典。你们说得对,你们必须手动映射它。使用Fluent,它应该是
References(x=>x.Dictionary).AsMap(“keyColumn”).Element(“valueColumn”,c=>c.Type())。我认为这是一个被低估的答案-有时制作另一个带有两个属性(键、值)的POCO并引用它更简单,如果您不想麻烦编写映射(Lazy,yes..Recommender,no..but…),请尝试AsMap()
public class StringKeyedDictionary<T> : Dictionary<string, T>
{
}
public class Land
{
   public virtual StringKeyedDictionary<int> Damages { get; set; }
   // and other properties
}