El código siguiente implementa un UDT que se deriva de un genérico (SortedDictionary):¿Por qué los tipos CLR derivados de genéricos no son compatibles con SQL Server 2008 y posterior?
[Serializable]
[Microsoft.SqlServer.Server.SqlUserDefinedType(Format.UserDefined, MaxByteSize = 8000)]
public class udtMassSpectra : SortedDictionary<float, float>, INullable, IBinarySerialize, ICloneable, IDisposable
{
...
}
Creación del tipo (T-SQL):
CREATE TYPE dbo.udtMassSpectra EXTERNAL NAME MassSpectra.udtMassSpectra;
se emite una excepción:
Msg 10331, nivel 16, estado 1, línea 1 Escriba 'udtMassSpectra' en el ensamblado 'MassSpectra' deriva de un tipo genérico que no es compatible con CLR Tipo.
¿Cuál es el motivo? ¿Hay alguna solución alternativa que no sea ocultar la clase base dentro de un miembro privado? Este código funciona bien en SQL-Server 2005.
Espero que respondan. http://connect.microsoft.com/SQLServer/feedback/details/737635/cannot-create-udt-which-derives-from-a-generic-on-sql-server-2008 – lorond
Creo que el hecho de que funcionó en 2005 y el informe no se ha cerrado. Connect indica que es posible que haya tropezado con un error antiguo. – Godeke