【问题标题】:Fluent NHibernate IDictionary with composite element mappingFluent NHibernate IDictionary 与复合元素映射
【发布时间】:2010-03-26 11:41:10
【问题描述】:

我有这两个类:

    public class Category
        {
            IDictionary<string, CategoryResorce> _resources;
        }

    public class CategoryResource
        {
            public virtual string Name { get; set; }
            public virtual string Description { get; set; }
        }

这是xml映射

<class name="Category" table="Categories">
  <id name="ID">
    <generator class="identity"/>
  </id>
  <map name="Resources" table="CategoriesResources" lazy="false">

      <key column="EntityID" />
      <index column="LangCode" type="string"/>

      <composite-element class="Aca3.Models.Resources.CategoryResource">
        <property name="Name" column="Name" />
        <property name="Description" column="Description"/>
      </composite-element>
  </map>
</class>

我想用 Fluent 编写它。 我发现了类似的东西,我正在尝试使用这段代码:

  HasMany(x => x.Resources)
                .AsMap<string>("LangCode")
                .AsIndexedCollection<string>("LangCode", c => c.GetIndexMapping())
                .Cascade.All()
                .KeyColumn("EntityID");

但我不知道如何将 CategoryResource 实体映射为 Category 元素内的复合元素。

有什么建议吗?

谢谢

【问题讨论】:

    标签: nhibernate fluent


    【解决方案1】:

    我认为您正在寻找的映射是这样的:

    HasMany<CategoryResource>(x => x._resources)
    .AsMap<string>("LangCode")
    .KeyColumn("EntityID")
    .Table("CategoryResources")
    .Component(x =>
        {
            x.Map(c => c.Name);
            x.Map(c => c.Description);
        })
    .Cascade.All();
    

    【讨论】:

    • 你是明星 Chris - 我下午的大部分时间都在谷歌上搜索如何使用 Fluent 做到这一点,你成功了。谢谢!
    猜你喜欢
    • 2013-04-04
    • 2011-01-12
    • 2011-01-29
    • 2013-12-01
    • 1970-01-01
    • 2012-01-02
    • 2013-01-07
    • 2011-02-06
    • 2011-04-10
    相关资源
    最近更新 更多