2012-12-19 4 views
11

Qualcuno sa come applicare l'attributo Alias ​​corretto alle tabelle di query con i nomi di schema?Utilizzo dei nomi di schema con SQL Server e ServiceStack.OrmLite

Ho un tavolo chiamato accounts.register. Ho provato a utilizzare [Alias("accounts.register")] come attributo decoratore di classe per la classe Register ma questo non funziona.

Se cambio lo schema in dbo, posso rimuovere l'alias e tutto funziona. Sfortunatamente ho un sistema legacy con molti schemi, quindi ho bisogno che funzioni.

risposta

20

OK Ho capito. Insieme all'attributo Alias ​​c'è l'attributo Schema. Il primo si trova nello spazio dei nomi ServiceStack.DataAnnotations ma quest'ultimo si trova nello spazio dei nomi ServiceStack.OrmLite. Ecco un esempio per mappare i campi Field1 & campo2 da/per 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

Qualsiasi idea di come raggiungere OrmLite per fare questo se si sta utilizzando la generazione T4 POCO? – anaximander

+0

Supporto @anaximander aggiunto recentemente nella versione 4. https://github.com/ServiceStack/ServiceStack.OrmLite/commit/a305464056dfa4739f77417dc9e42b323222a3f1. Se vuoi aggiungerlo tu stesso, puoi aggiungere '[Schema ("<# = tbl.Schema #>")]' alla riga sottostante '[Alias ​​("<#=tbl.Name#>")]' e che aggiungerà l'attributo Schema tu richiedono. –