小编jah*_*ahu的帖子

为什么SQL Server 2008及更高版本不支持从泛型派生的CLR类型?

以下代码实现了一个UDT,它派生自泛型(SortedDictionary):

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

创建类型(T-SQL):

CREATE TYPE dbo.udtMassSpectra EXTERNAL NAME MassSpectra.udtMassSpectra;
Run Code Online (Sandbox Code Playgroud)

抛出异常:

消息10331,级别16,状态1,行1在程序集"MassSpectra"中键入'udtMassSpectra'派生自CLR类型不支持的泛型类型.

是什么原因?除了将基类隐藏在私有成员中之外,还有其他解决方法吗?此代码适用于SQL-Server 2005.

c# t-sql generics sql-server-2008 sql-server-2012

39
推荐指数
1
解决办法
1136
查看次数

标签 统计

c# ×1

generics ×1

sql-server-2008 ×1

sql-server-2012 ×1

t-sql ×1