我正在尝试创建一个SqlUserDefinedAggregate
用 C# 附加到我的 SQL Server 2008 实例。我正在使用 .NET 3.5。基本上,我想计算看到字符串值的次数。由于用途,它确实需要是一个聚合函数。该函数的代码在逻辑上是合理的,但是当我去部署时,我得到了这个:
部署错误 SQL01268:.Net SqlClient 数据提供程序:Msg 6222,级别
16、状态 1、第 1 行类型“GEMCLR.CountTypes”标记为本机
序列化,但类型“GEMCLR.CountTypes”的字段“m_types”不是
对于本机序列化有效。
m_types
is a Dictionary<string, int>
。我的代码的轮廓如下所示:
[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 () { ... }
}
通常字典不是开箱即用的可序列化,这是你的问题,有很多关于如何解决这个问题的文章,例如 Adam Semel 的如何在 C# 中序列化字典或哈希表 http://blogs.msdn.com/b/adam/archive/2010/09/10/how-to-serialize-a-dictionary-or-hashtable-in-c.aspx.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)