Il seguente codice implementa un UDT che deriva da un generico (SortedDictionary):Perché i tipi di CLR derivati da generici non sono supportati in SQL Server 2008 e versioni successive?
[Serializable]
[Microsoft.SqlServer.Server.SqlUserDefinedType(Format.UserDefined, MaxByteSize = 8000)]
public class udtMassSpectra : SortedDictionary<float, float>, INullable, IBinarySerialize, ICloneable, IDisposable
{
...
}
Creazione del tipo (T-SQL):
CREATE TYPE dbo.udtMassSpectra EXTERNAL NAME MassSpectra.udtMassSpectra;
genera un'eccezione:
Messaggio 10331, livello 16, stato 1, riga 1 Digitare 'udtMassSpectra' nell'assieme 'MassSpectra' deriva da un tipo generico che non è supportato per un Tipo CLR.
Qual è il motivo? C'è qualche soluzione alternativa oltre a nascondere la classe base all'interno di un membro privato? Questo codice funziona correttamente su SQL Server 2005.
Spero che risponderanno. http://connect.microsoft.com/SQLServer/feedback/details/737635/cannot-create-udt-which-derives-from-a-generic-on-sql-server-2008 – lorond
Penso che abbia funzionato nel 2005 e il rapporto non è stato chiuso su Connect indica che potresti esserti imbattuto in un bug vecchio stile. – Godeke