установка типа и длины для свойства составного ключа в беглом nhibernate - PullRequest
4 голосов
/ 12 октября 2010

В отображениях HBM я могу

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

Как мне это сделать (настройка типа и длины) в Fluent?

Edit:
Я разместил это на support.fluentnhibernate.org . Я включил некоторые модификации для поддержки установки типа, например AnsiString есть.

Редактировать 2:
Сегодня Пол Батум добавил поддержку текстового типа и длины в своей ветке разработки. (См. github об изменениях.)
Это позволяет писать

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

Ответы [ 2 ]

2 голосов
/ 13 марта 2012

Я обновил до 1.2 и могу установить тип ключевого свойства в AnsiString

            CompositeId()
            .KeyReference(x => x.ViewDto, "type_id")
            .KeyProperty(x => x.FieldName, p =>
                                               {
                                                   p.ColumnName("field_name");
                                                   p.Type("AnsiString");
                                               });
1 голос
/ 12 октября 2010

Кажется, ты не можешь. Вы можете пойти только до ...

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