Fluent nhibernate 在fluent nhibernate中,如何使用带有类的复合id作为id字段?

Fluent nhibernate 在fluent nhibernate中,如何使用带有类的复合id作为id字段?,fluent-nhibernate,nhibernate-mapping,Fluent Nhibernate,Nhibernate Mapping,我有这样一个映射文件: <class name="Resource" table="resource" discriminator-value="null"> <composite-id name="Key" class="Models.Bases.ClientKey, Models"> <key-property name="Id" column="ID" type="int"/> <key-property n

我有这样一个映射文件:

<class name="Resource" table="resource" discriminator-value="null">
    <composite-id name="Key" class="Models.Bases.ClientKey, Models">
        <key-property name="Id" column="ID" type="int"/>
        <key-property name="SiteId" column="clientID" type="int"/>
    </composite-id>
    <property name="Name" type="String">
        <column name="`name`" length="500" sql-type="varchar" not-null="false"/>
    </property>
</class>
如何使用FluentNhibernate重新映射此内容?此代码不起作用:

WithTable("resource");
UseCompositeId()
   .WithKeyProperty(x => x.Key.Id, "ID")
   .WithKeyProperty(x => x.Key.ClientId, "clientID");
Map(x => x.Name);
它抛出以下错误: 在类“Models.Resource”中找不到属性“Id”的getter


谢谢

如果不修改资源类,恐怕您无法修复它。我已经查阅了Fluent NHibernate的源代码-下面是输出复合id部件的代码:

XmlElement element = classElement.AddElement("composite-id");
foreach( var keyProp in keyProperties )
{
  keyProp.Write(element, visitor);
}
缺少的是“name”属性,该属性应设置为“Key”。如果没有此attibute,NHibernate将回退到默认属性name=“Id”。由于您的类没有Id属性,NHibernate不知道该做什么并抛出异常


如果您不能修改资源类,您将不得不为此类使用hbm映射或创建一个到fluent nhibernate的修补程序(这可能是已知的问题,有人正在解决它-请参阅fluent nhibernate的问题跟踪程序)。

感谢您将代码指向我,我现在正在处理修补程序!补丁完成。。。可以在这里找到:
XmlElement element = classElement.AddElement("composite-id");
foreach( var keyProp in keyProperties )
{
  keyProp.Write(element, visitor);
}