C#和SQL Server 2008 CLR序列化问题

我试图在C#中创建一个SqlUserDefinedAggregate以附加到我的SQL Server 2008实例。 我正在使用.NET 3.5。 基本上,我想计算我看到字符串值的次数。 由于使用它确实需要是一个聚合函数。 该函数的代码在逻辑上是合理的,但是当我去部署时,我得到了这个:

部署错误SQL01268:.Net SqlClient数据提供程序:消息6222,级别16,状态1,行1类型“GEMCLR.CountTypes”标记为本机序列化,但类型为“GEMCLR.CountTypes”的字段“m_types”对本机无效序列化。

m_typesDictionary 。 我的代码大纲如下所示:

 [Serializable] [Microsoft.SqlServer.Server.SqlUserDefinedAggregate (Format.Native)] public struct CountTypes { private Dictionary m_types; public void Init () { m_types = new Dictionary (); } public void Accumulate (SqlString value) { ... } public void Merge (CountTypes group) { ... } public SqlString Terminate () { ... } } 

通常一个字典不是开箱即用的序列化,这是你的问题,有很多关于如何解决这个问题的文章,例如Adam Semel的如何在C#中序列化字典或Hashtable 。