【问题标题】:NHibernate mapping by code Map collectionNHibernate 通过代码映射集合映射
【发布时间】:2012-07-09 18:32:27
【问题描述】:

我正在从 xml 映射转向基于代码的映射。我在使用 NHibernate 地图集合时遇到了问题。

下面是完美运行的xml映射(有点简化,实际上还有更多的属性和集合):

<class name="Company" where="IsDeleted=0" lazy="false">
    <id name="Id">
        <generator class="guid"></generator>
    </id>
            <map name="Contacts" lazy="true" cascade="all" where="IsDeleted=0">
        <key column="CompanyId"></key>
        <index column="Id" type="guid"></index>
        <one-to-many class="CompanyContact"/>
    </map>
</class>

接下来是我想出的替代代码映射:

public CompanyMap()
{
    Id(x => x.Id, mapper => mapper.Generator(Generators.Guid));
    Map(x => x.Contacts,
    m =>
    {
    m.Where(FILTER);
    m.Cascade(Cascade.All);
    m.Lazy(CollectionLazy.Lazy);
    m.Key(c => c.Column("CompanyId"));
    }, k =>
    {
    k.Element(e =>
    {
        e.Column("Id");
    });
    k.OneToMany(e => e.Class(typeof(CompanyContact)));
    });
}

以上为地图生成下一个hbml:

<map name="Contacts" lazy="true" cascade="all" where="IsDeleted=0">
  <key column="CompanyId" />
  <map-key type="Guid" />
  <one-to-many class="CompanyContact" />
</map>

我显然在这里缺少索引列。因此在生成 SQL 时,nhibernate 将使用 idx 的 DefaultIndexColumnName。

那么问题是如何设置地图的索引?

更新: 根据休眠文档,我应该使用map-key。 换个说法,我该如何设置 map-key 的 column 属性?

【问题讨论】:

    标签: nhibernate-mapping nhibernate-mapping-by-code


    【解决方案1】:

    这还没有在 NHibernate 3.3.1 版本中实现。 为此在 Jira 中创建了一个问题。

    【讨论】:

    • 任何指向已创建问题的链接?
    猜你喜欢
    • 2012-04-09
    • 1970-01-01
    • 2013-09-05
    • 1970-01-01
    • 2018-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多