更新到最新版本的原型网(2.4.0)后,事情不再工作了:
系统InvalidOperationException:无法为:QueryContainer准备序列化程序
多年来,在2.0.0.668版本中,一切都运行良好,似乎在2.2.1版本中也能正常工作,但2.3.0版本和更新版本导致了这个问题。
什么改变了,或者说我从来没有做对过什么?:-)我构建了一个小型复制程序,其结果是:
无法为ProtoRepro准备序列化程序。程序QueryContainer InnerException:类型不能表示为默认值:System。收藏。通用的KeyValuePair`2[[ProtoRepro.Program Query,ProtoRepro,Version=1.0.0,Culture=neutral,PublicKeyToken=null],[System.Double,System.Private.CoreLib,Version=4.0.0.0,Culture=neutral,PublicKeyToken=7cec85d7bea7798e]]
using ProtoBuf;
using ProtoBuf.Meta;
using System;
using System.Collections.Generic;
using System.Runtime.Serialization;
namespace ProtoRepro {
internal class Program {
private static void Main(string[] args) {
try {
RuntimeTypeModel.Default[typeof(QueryContainer)].CompileInPlace();
// we get here with version 2.2.1 and lower
Console.WriteLine("Everything is fine!");
} catch (InvalidOperationException ioex) {
Console.Write(ioex.ToString());
} catch (NotSupportedException nsex) {
Console.Write(nsex.ToString());
}
}
[Serializable, ProtoContract]
public class QueryContainer {
private QueryContainer() { }
[ProtoMember(1, OverwriteList = true)]
public Dictionary<string, KeyValuePair<Query, double>> QueryAndWeightPerVariable { get; protected set; }
}
[Serializable, ProtoContract]
public class Query {
[ProtoMember(1)]
public QueryValue QueryValue { get; set; }
protected Query() { }
public Query(QueryValue queryValue) {
QueryValue = queryValue;
}
}
[Serializable, ProtoContract]
public class QueryValue {
[ProtoMember(1)]
public object Value { get; set; }
protected QueryValue() { }
public QueryValue(object value) {
Value = value;
}
}
}
}
我将不得不设置一个本地测试来弄清它的底细,但是这里的变化很可能与“映射”行为有关。因此,您可以尝试添加
[ProtoMap(DisableMap = true)]
给字典的成员。如果这是一个猜测,我道歉(特别是如果我错了!),但我必须等到我有时间再深入研究。将其作为问题记录在GitHub上可能也很有用。
我是MySQL的博士后新手。 我创建了一个表,其列“col”的默认值为null。 但是,在默认列中,没有任何内容表明它是空字段。 在模式输出中,默认值应该显示为null吗? 我也尝试了上面的相同示例,但使用了。键入时,Default列中没有显示任何内容。在该示例中,我插入一行,它获取默认值,因此我知道正在使用默认值(至少对于整数值)。更新:默认列实际上显示了99。我使用了自动完成\d并查看了错误的
列插入和更新默认值是指创建 默认值 对于一行中的特定列,INSERT或UPDATE语句正在对该行执行,如果 没有为该列的INSERT或UPDATE语句提供值 . 也就是说,如果一个表有一个名为“timestamp”的列,并且INSERT语句继续执行,但不包括该列的值,则INSERT default将创建一个新值,例如current time,用作要插入“timestamp”列中的值。如果声明 do
Visual Studio代码中是否有方法更改用于新文件的默认语言? 默认情况下,如果您打开一个新文件,它将设置为“纯文本”,我希望它改为“HTML”。 我经常将HTML复制粘贴到VSC中,进行一些编辑,然后将其复制回我正在使用的CMS(CMS编辑器很糟糕)。我根本不想将代码保存在我的计算机上,只需使用 HTML 语法突出显示对其进行一些编辑,但我希望这是默认设置。
我有一个包含2900万行的大型PostgreSQL表。该表的大小(根据pgAdmin中的stats选项卡,几乎为9GB)为post-gis启用了一个空的geometry列。 我想使用ST_GeomFromText更新几何体列,从存储在同一表中的X和Y坐标列(SRID:27700)读取数据。但是,一次对整个表运行此查询会导致“磁盘空间不足”和“服务器连接丢失”错误……后者的频率较低。 为了克服这个问
问题内容: 我正在尝试编写一些搜索输入,以使用ngResource从数据库中获取数据。 数据在页面上显示为ng-repeat,但是当我执行搜索并且$ scope已更新时,该视图未更新并显示旧数据。 这是代码: main.html(活动视图) main.js searchbar.js 当它启动时,它从数据库中获取所有数据并正确显示它们,当我尝试进行搜索时,$ scope.eventi会更新(我可以从
我们目前正在Android中使用okhttp3和Reformation2来使用多部分/表单数据进行POST类型的网络api调用,api请求和响应如下所示 如果您观察到,请求标题Content-Type具有 下面是代码 我在发送定制的请求头内容类型时遇到了一个问题,它是“”基本上我需要更新内容类型头以适应“”为此我尝试了以下代码 这导致添加""到Content-Type,但这导致删除或不添加现有属性