2011-12-17 72 views
0

目前有一种方法可以在Fluent NHibernate中使用相当于index-many-to-many的NHibernate标签吗?Fluent NHibernate index-many-to-many

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

生成是: <index type=...

本来应该: <index-many-to-many class=...

编辑: 目前我使用的解决方法是产生PA最后不正确的映射,手动编辑映射文件,注释掉映射代码,然后手动添加更正的映射文件来代替Fluent NHibernate从注释掉的映射代码中生成它。因为任何时候映射的变化都是不理想的,我需要再次通过这个过程,但是一旦我的映射不会改变,这不会是一个问题。

回答

0

我通过使用AsTernaryAssociation除了AsMap解决了这个问题。

总之,映射一个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"); 

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

+0

`.AsMap(“KeyColumn”)`应该是这里的noop/unnesses,因为AsMap和TernaryAssociation是互斥的。也许这就是为什么当类型已经通过AsMap声明并且试图添加AsTernary时抛出的原因 – Firo 2012-03-29 18:25:47