Почему типы CLR, полученные из универсальных шаблонов, не поддерживаются в SQL Server 2008 и более поздних версиях?

Следующий код реализует UDT, производный от универсального (SortedDictionary):

[Serializable]
[Microsoft.SqlServer.Server.SqlUserDefinedType(Format.UserDefined, MaxByteSize = 8000)]
public class udtMassSpectra : SortedDictionary<float, float>, INullable, IBinarySerialize, ICloneable, IDisposable
{
...
}

Создание типа (T -SQL):

CREATE TYPE dbo.udtMassSpectra EXTERNAL NAME MassSpectra.udtMassSpectra;

вызывает исключение:

Msg 10331, уровень 16, Состояние 1, Строка 1 Введите udtMassSpectra в сборке «MassSpectra» происходит от универсального типа, который не поддерживается для Тип CLR.

В чем причина? Есть ли какой-либо обходной путь, кроме сокрытия базового класса в частном члене?Этот код отлично работает на SQL -Server 2005.

39
задан jahu 13 April 2012 в 13:41
поделиться