2012-05-02 18 views
12

Mam mapowanie, które mapuje pole obiektu IPAddress do bazy danych.Wygeneruj tabelę dla mapowania IPAddress jako typ INET w PostgreSQL?

Typ inet w PostgreSQL nadaje się do tego, ale w moim przypadku zamiast tego używa typu bytea, gdy generuje schemat.

Czy istnieje sposób na wymuszenie wygenerowania wygenerowanego typu schematu dla tej kolumny na inet w rzeczywistości w DB?

ja też zdarzy się, że ten wymóg na kompozytowej ID (whicg jest wymagane)

CompositeId() 
.KeyProperty(x => x.Date, "for_date") 
.KeyProperty(x => x.Address, var => var.ColumnName("ipaddress")); 

cant naprawdę korzystania CustomSqlType na kluczowej części nieruchomości.

Próbowałem też za pomocą

public class IPAddressPropertyConvention : IPropertyConvention 
{ 
    public void Apply(IPropertyInstance instance) 
    { 
     if (instance.Property.PropertyType == typeof(IPAddress)) 
      instance.CustomSqlType("inet"); 
    } 
} 

Ale otrzymuję wyjątek o konwencji nieważny własności

+0

Zobaczymy, czy rozumiem pytanie. Chcesz wygenerować schemat bazy danych za pomocą 'nhibernate', a gdy spróbujesz napisać kod, aby to zrobić w' fluent', generuje on kolumnę typu 'bytea'. Wolisz wygenerować kolumnę typu 'inet'. Czy to prawda? –

+0

@Catcall tak, właśnie to. –

Odpowiedz

4
Map(x => x.IPAddress) 
    .CustomSqlType("inet") 
    .CustomType<IPAddressToInetUserType>(); // maybe needed, you should check 
+0

Czy to działające rozwiązanie lub rzekomo działa? Ponieważ to nie działa dla mnie, myślę. –

+0

Jest to sposób postępowania podczas mapowania typów niestandardowych. działa dla wielu innych typów, stąd najprawdopodobniej również tutaj działa. ** uwaga: ponieważ jest to kluczowa właściwość, której potrzebujesz IIdConvention ** – Firo

+0

jest podobny przypadek do hibernacji https://forum.hibernate.org/viewtopic.php?f=1&t=984186 – Firo

Powiązane problemy