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

C#和SQL Server 2008 CLR序列化问题,c#,sql-server-2008,.net-3.5,C#,Sql Server 2008,.net 3.5,我正在尝试在C#中创建一个SqlUserDefinedAggregate,以附加到我的SQL Server 2008实例。我正在使用.NET3.5。基本上,我想计算看到字符串值的次数。由于使用的原因,它确实需要是聚合函数。该函数的代码在逻辑上是合理的,但当我开始部署时,我得到以下信息: 部署错误SQL01268:.Net SqlClient数据提供程序:Msg 6222,级别 16,状态1,第1行类型“GEMCLR.CountTypes”标记为本机 序列化,但类型为“GEMCLR.CountTy

我正在尝试在C#中创建一个
SqlUserDefinedAggregate
,以附加到我的SQL Server 2008实例。我正在使用.NET3.5。基本上,我想计算看到字符串值的次数。由于使用的原因,它确实需要是聚合函数。该函数的代码在逻辑上是合理的,但当我开始部署时,我得到以下信息:

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

m_types
是一本
字典
。我的代码的大纲如下所示:

[Serializable]
[Microsoft.SqlServer.Server.SqlUserDefinedAggregate (Format.Native)]
public struct CountTypes
{
    private Dictionary<string, int> m_types;

    public void Init ()
    {
        m_types = new Dictionary<string, int> ();
    }

    public void Accumulate (SqlString value) { ... }

    public void Merge (CountTypes group) { ... }

    public SqlString Terminate () { ... }
}
[可序列化]
[Microsoft.SqlServer.Server.SqlUserDefinedAggregate(Format.Native)]
公共结构类型
{
专用字典m_类型;
公共void Init()
{
m_types=新字典();
}
公共无效累积(SqlString值){…}
公共无效合并(CountTypes组){…}
公共SqlString终止(){…}
}

通常字典不是现成的可序列化的,这是你的问题,有很多关于如何解决这个问题的文章,例如Adam Semel的。

你做了什么来让它工作?我得到了这个确切的错误