Ho appena saputo di un tipo geniale che semplificherebbe molto il mio lavoro ma sembra che il mio ORM preferito non lo riconosca.Supporto specifico per SQL Server per OrmLite
Esiste una soluzione alternativa per consentire a ServiceStack OrmLite di riconoscere HierarchyId
in SQL Server? Qualche suggerimento su quali file modificare e suggerimenti su come procedere?
EDIT:
Ecco una migliore spiegazione del problema. Ho la seguente classe:
public class MyClass
{
public int Id { get; set; }
public SqlHierarchyId HierarchyId { get; set; }
}
SqlHierarchyId è un tipo di dati SQL Server personalizzato. OrmLite genererà la seguente classe per esso:
Abbastanza divertente, posso utilizzare l'attributo [StringLength(255)]
sulla proprietà e otterrà il tipo varchar(255)
invece:
I manualmente cambiata la tabella qui e aggiunto il tipo di dati della colonna per mostrare la differenza. Prego notare il tipo di dati della terza colonna:
Avere una rappresentazione varchar
è perfettamente bene con altri DBMS come it can be converted within C#, ma con SQL Server è preferibile avere corrisponde al tipo di dati corrispondente. Ciò faciliterà la creazione di viste (grazie alle funzioni integrate del tipo di dati hierarchyid
).
So che il tipo non è supportato da EF4 (non sono sicuro di circa 5). Ho anche sfogliato il file OrmLiteDialectProviderBase.cs su GitHub e posso visualizzare un elenco di tipi di dati ADO.NET supportati.
La mia semplice domanda è: questa è una forte limitazione di ADO.NET o questa può essere vista prima o poi in OrmLite? Sono disposto ad aiutare ad estendere questa parte se vengono fatti dei suggerimenti.
Puoi mostrare un esempio di codice SQL + di qualcosa che desideri che OrmLite supporti? – mythz
Non sono sicuro di ciò che fa OrmLite, ma sembra che dovrebbe corrispondere a un tipo di stringa, poiché contiene dati come '/ 123/234/125'. – RedFilter
@mythz: Guarda la domanda modificata –