0

我无法弄清楚如何在使用复合键时映射接口。如何使用接口作为复合ID的一部分流利Nhibernate

我想要做的是这样的:

interface Ifoo 
{ 
    int someInt {get;} 
    int id {get;} 
} 

class bar1: Ifoo 
{ 
    int someInt {get; protected internal set;} 
    int id {get; protected internal set;} 
} 

class bar2: Ifoo 
{ 
    int someInt {get; protected internal set;} 
    int id {get; protected internal set;} 
} 

class someOtherClass 
{ 
    Ifoo myFoo {get; protected internal set;} 
    int id {get; protected internal set;} 
} 

public class someOtherClassMap: ClassMap<someOtherClass> 
{ 
    CompositeId() 
    .KeyReference(x => x.myFoo, "fooID") 
    .KeyProperty(x => x.id, "id"); 

    References(x => x.myFoo) 
    .Class(typeof (foo1)) 
    .Class(typeof (foo2)) 
    .Column("fooID") 
    .Not.Insert() 
    .Not.Update(); 
} 

的参考工作没有问题,但我不能让KeyReference上班,似乎没有要任何的” .class “我可以像参考文献一样使用。

我读:

Fluent NHibernate, working with interfaces

Programming to interfaces while mapping with Fluent NHibernate

,这样我就解决引用问题,但我还没有找到一个变通的KeyReference。有没有什么明显的我失踪了,因为我一直在搜索一下,到目前为止一直没有找到任何东西。

回答

0

这也许工作

.KeyReference(x => x.myFoo, attr => attr.Column("fooID").EntityName("bar1")) 
+0

不幸的是我用流利的旧版本,我没有匹配的签名,该签名的任何功能。 – Zipper 2012-01-06 16:33:19

+0

那么你必须做反思或扩展自己的FNH版本。如果需要,我可以发布反射代码。 – Firo 2012-01-06 18:11:37

相关问题