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

标签 c# sql-server-2008 .net-3.5

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

Deploy error SQL01268: .Net SqlClient Data Provider: Msg 6222, Level 16, State 1, Line 1 Type "GEMCLR.CountTypes" is marked for native serialization, but field "m_types" of type "GEMCLR.CountTypes" is not valid for native serialization.

m_typesDictionary<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 的 How to Serialize a Dictionary or Hashtable in C# .

关于C# 和 SQL Server 2008 CLR 序列化问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7270785/

相关文章:

c# - 存储过程结构

sql - ALTER TABLE语句冲突

c# - LINQ 查询具有未知类的对象

C# Linq to Sql XML 检索父级中最近的元素

用于查找订单最后一个事件状态的 SQL 查询

c# - 如何验证一个事件已经被模拟取消订阅

C# WinForms,这是什么奇怪的错误?

c# - 缺少空的 Web 应用程序模板

c# - Gridview 分页在添加页面大小时消失

c# - C#代码中的div样式