Fluent nhibernate 在fluent nhibernate中设置复合键属性的类型和长度

Fluent nhibernate 在fluent nhibernate中设置复合键属性的类型和长度,fluent-nhibernate,nhibernate-mapping,Fluent Nhibernate,Nhibernate Mapping,在hbm映射中,我可以 <composite-id> [..] <key-property name="someStringProperty" column="somefield" type="AnsiString" lenght="8"/> </composite-id> 看来你不能。你只能走到 CompositeId()

在hbm映射中,我可以

<composite-id>
   [..]
   <key-property name="someStringProperty" 
                 column="somefield" 
                 type="AnsiString" 
                 lenght="8"/>
</composite-id>

看来你不能。你只能走到

CompositeId()
        .KeyProperty(x => x.Id1, "ID1")
        .KeyProperty(x => x.Id2, "ID2");
没有类型或长度选项

但在版本1.1中,似乎有一种可能性

CompositeId() 
            .KeyProperty(x => x.Id1) 
            .KeyProperty(x => x.Id2, kp => kp 
                .ColumnName("ID2") 
                .Type(typeof(string)));

我更新到了1.2,并且能够将密钥属性的类型设置为AnsiString

            CompositeId()
            .KeyReference(x => x.ViewDto, "type_id")
            .KeyProperty(x => x.FieldName, p =>
                                               {
                                                   p.ColumnName("field_name");
                                                   p.Type("AnsiString");
                                               });

但是fluent
Type(typeof(string))
仍然会产生一个nvarchar映射,而hbm
Type=“AnsiString”
会产生一个varchar映射!?这么说根本不收费?好像是这样。尽管看起来他们可能会在将来添加自定义类型。谁知道呢。您可能希望在开始讨论时将其添加到API中。确定。这个答案是正确的。目前无法在复合键部件上设置length属性,只能设置.net类型。有关更多信息的链接,请参见问题的编辑。我看到了.ColumnName()和.Type(),但没有看到.Length()。使用流利的NHibernate 1.1.1.694。我想它还没有落在行李箱里。这很漂亮。非常感谢。fluent wiki上没有提到这一点。
            CompositeId()
            .KeyReference(x => x.ViewDto, "type_id")
            .KeyProperty(x => x.FieldName, p =>
                                               {
                                                   p.ColumnName("field_name");
                                                   p.Type("AnsiString");
                                               });