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

时间:2010-10-12 13:41:45

标签: fluent-nhibernate nhibernate-mapping

在hbm映射中我可以

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

我如何在Fluent中设置(设置类型和长度)?

编辑:
我在support.fluentnhibernate.org上发布了这个帖子。我提供了一些修改以支持将类型设置为例如AnsiString那里。

编辑2:
今天Paul Batum在他的开发分支中增加了对文本类型和长度的支持。 (有关更改,请参阅github。)
这使得写入

成为可能
CompositeId()
  .KeyProperty(
       p => p.SomeProp, 
       k => k.ColumnName("someField").Type("AnsiString").Length(8))

2 个答案:

答案 0 :(得分:2)

我更新到1.2并且能够将键属性的类型设置为AnsiString

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

答案 1 :(得分:1)

好像你不能。你只能...... ...

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)));