Następujący kod realizuje UDT pochodzący z ogólnym (SortedDictionary):Dlaczego typy CLR pochodzą z generycznych nieobsługiwanych w SQL Server 2008 i nowszych wersjach?
[Serializable]
[Microsoft.SqlServer.Server.SqlUserDefinedType(Format.UserDefined, MaxByteSize = 8000)]
public class udtMassSpectra : SortedDictionary<float, float>, INullable, IBinarySerialize, ICloneable, IDisposable
{
...
}
Tworzenie typu (T-SQL)
CREATE TYPE dbo.udtMassSpectra EXTERNAL NAME MassSpectra.udtMassSpectra;
wyjątek to
Msg 10331, poziom 16, Stan 1, wiersz 1 Typ "udtMassSpectra" w zestawie "MassSpectra" pochodzi od typu ogólnego, który nie jest obsługiwany w przypadku Typ CLR.
Jaki jest tego powód? Czy istnieje jakieś obejście poza ukrywaniem klasy bazowej w ramach prywatnego członka? Ten kod działa poprawnie na SQL-Server 2005.
Mam nadzieję, że odpowiedzą. http://connect.microsoft.com/SQLServer/feedback/details/737635/cannot-create-udt-which-derives-from-a-eneric-on-sql-server-2008 – lorond
Myślę, że to zadziałało w 2005 roku a raport nie został zamknięty w programie Connect, oznacza, że możesz natknąć się na staroświecki błąd. – Godeke