【问题标题】:Fluent NHibernate index-many-to-manyFluent NHibernate 索引多对多
【发布时间】:2011-12-18 21:02:47
【问题描述】:

目前有没有办法在 Fluent NHibernate 中使用相当于 index-many-to-many NHibernate 标签的方法?

我试图实现的映射几乎完美地在HasManyToMany 上使用AsMap 生成,除了这个指定地图中索引的元素:

生成的是: <index type=...

应该是: <index-many-to-many class=...

编辑: 目前我使用的解决方法是生成部分不正确的映射,手动编辑映射文件,注释掉映射代码,然后手动添加更正的映射文件来代替 Fluent NHibernate 从注释掉的映射代码生成它。不理想,因为任何时候映射更改我都需要再次执行此过程,但是一旦我的映射不更改,这将不是什么大问题。

【问题讨论】:

    标签: nhibernate fluent-nhibernate


    【解决方案1】:

    除了AsMap 之外,我还使用AsTernaryAssociation 解决了这个问题。

    总之,要映射一个IDictionary<KeyEntity,ValueEntity> 我有映射:

    HasManyToMany(x => x.TheDictionary)
        .AsMap("KeyColumn")
        .AsTernaryAssociation("KeyColumn", "ValueColumn");
    

    请注意,由于某种原因,包含类型参数会导致此方法不起作用(即下面将抛出 FluentNHibernate.Cfg.FluentConfigurationException

    HasManyToMany<ValueEntity>(x => x.TheDictionary)
        .AsMap<KeyEntity>("KeyColumn")
        .AsTernaryAssociation("KeyColumn", "ValueColumn");
    

    如果有人知道,我很想知道为什么键入的版本不起作用?

    【讨论】:

    • .AsMap("KeyColumn") 在这里应该是一个 noop/unnessesary,因为 AsMap 和 TernaryAssociation 是互斥的。也许这就是当类型已经通过 AsMap 声明然后尝试添加 AsTernary 时它抛出的原因
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    • 1970-01-01
    • 2012-02-24
    • 2011-06-27
    相关资源
    最近更新 更多