2012-05-02 1 views
12

Ich habe eine Zuordnung, die Objektfeld Datenbank zugeordnet.Generieren Sie Tabelle für die Zuordnung von IPAddress als INET-Typ in PostgreSQL?

Es gibt inet Typ in PostgreSQL geeignet dafür, aber in meinem Fall verwendet es stattdessen bytea Typ, wenn es Schema generiert.

Gibt es eine Möglichkeit, den resultierenden generierten Schematyp für diese Spalte zu erzwingen, der tatsächlich inet in DB ist?

ich zufällig auch auf Composite-ID diese Anforderung haben (whicg erforderlich)

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

Sie kann nicht wirklich CustomSqlType auf Schlüsseleigenschaft Teil verwenden.

Ich habe auch versucht

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

Aber ich Ausnahme über ungültige Eigenschaft Konvention

+0

Mal sehen, ob ich die Frage mit verstehen. Sie möchten ein Datenbankschema mit 'nhibernate' erzeugen, und wenn Sie versuchen, den Code in' fluent' zu schreiben, erzeugt es eine Spalte vom Typ 'bytea'. Sie möchten lieber eine Spalte vom Typ 'inet' erzeugen. Ist das richtig? –

+0

@Catcall ja, genau das. –

Antwort

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

Ist es eine funktionierende oder angeblich arbeitende Lösung? Weil es für mich nicht funktioniert, denke ich. –

+0

Dies ist die Vorgehensweise beim Zuordnen von benutzerdefinierten Typen. es funktioniert für viele andere Typen, daher funktioniert es höchstwahrscheinlich auch hier. ** Hinweis: Da es eine Schlüsseleigenschaft ist, brauchen Sie IIdConvention ** – Firo

+0

gibt es einen ähnlichen Fall für den Winterschlaf https://forum.hibernate.org/viewtopic.php?f=1&t=984186 – Firo

Verwandte Themen