2010-10-12 68 views
4

在HBM映射我可以設置類型和長度

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

我如何做到這一點(設置類型和長度)的流利?我發佈了這個support.fluentnhibernate.org。我包括一些修改以支持將類型設置爲例如AnsiString在那裏。

編輯2:
今天,Paul Batum在他的開發分支中添加了對文本類型和長度的支持。 (見github上進行更改。)
這使得有可能寫

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

我看到.ColumnName()和.Type()而不是.Length()。使用流利NHibernate的1.1.1.694。 – 2011-02-15 15:04:20

+0

我想它還沒有落在樹幹裏。 – 2011-02-15 15:18:09

+0

這是美麗的。謝謝。在流利的維基上沒有提到這一點。 – Lombas 2017-02-24 17:46:32

回答

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

但流暢的Type(typeof(string))仍然導致nvarchar映射,而hbm'type =「AnsiString」'產生varchar映射!?那麼根本沒有收費? – Nils 2010-10-12 15:25:22

+0

似乎喜歡它。儘管看起來他們將來可能會添加CustomType。誰知道。您可能想要開始討論將其添加到http://support.fluentnhibernate.org/上的API。 – RonaldV 2010-10-12 21:55:07

+0

好的。這個答案是正確的。目前不可能在複合關鍵部件上設置長度屬性,而只能設置類型爲.net-types。請參閱問題上的編輯以獲取更多信息的鏈接。 – Nils 2010-10-13 09:42:12

2

我更新到1.2和我能夠一鍵屬性的類型設置爲AnsiString類型

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