2012-12-19 8 views
11

Wer weiß, wie man das korrekte Alias-Attribut auf Abfragetabellen mit Schemanamen anwendet?Verwenden von Schemanamen mit SQL Server & ServiceStack.OrmLite

Ich habe eine Tabelle mit dem Namen accounts.register. Ich habe versucht, [Alias("accounts.register")] als Class Decorator Attribut für Register-Klasse, aber das funktioniert nicht.

Wenn ich das Schema zu dbo ändern, dann kann ich den Alias ​​entfernen und alles funktioniert. Leider habe ich ein Legacy-System mit vielen Schemas, damit ich es brauche.

Antwort

20

OK Ich habe es herausgefunden. Zusammen mit dem Alias-Attribut ist das Schema-Attribut. Ersteres befindet sich im ServiceStack.DataAnnotations-Namespace, letzteres befindet sich jedoch im ServiceStack.OrmLite-Namespace. Hier ist ein Beispiel zur Karte Felder field1 & field2 zu/von myschema.mytable:

using System; 
using ServiceStack.OrmLite; 
using ServiceStack.DataAnnotations; 

[Schema("myschema")] 
[Alias("mytable")] 
public class MyEntity 
{ 
    [PrimaryKey] 
    [AutoIncrement] 
    public long Id { get; set; } 

    [Alias("field1")] 
    public string SomeField1 { get; set; } 

    [Alias("field1")] 
    public string SomeField2 { get; set; } 
} 
+0

Jede Idee, wie OrmLite zu bekommen, dies zu tun, wenn Sie die T4 POCO Generation verwenden? – anaximander

+0

@anaximander Unterstützung vor kurzem in Version 4 hinzugefügt. Https://github.com/ServiceStack/ServiceStack.Ormlite/commit/a305464056dfa4739f77417dc9e42b323222a3f1. Wenn Sie es selbst hinzufügen möchten, können Sie [Schema ("<# = tbl.Schema #>")] 'in die Zeile unter' [Alias ​​("<#=tbl.Name#>")] 'einfügen und das Schema-Attribut hinzufügen benötigen. –

Verwandte Themen