簡體   English   中英

如何在Apache Ignite中存儲DataTable?

[英]How to store DataTable in Apache Ignite?

基於當前的代碼實現,我們需要將System.Data.DataTable存儲在緩存中。 使用HttpRuntime.Cache時,它可以正常工作,但在Apache Ignite中則不能。 以下是代碼段。

IIgnite ignite = Ignition.Start();
ICache<string, object> cache = ignite.GetOrCreateCache<string, object>("cache");
DataTable table = new DataTable();
cache.Put("1", table);

它將拋出“無法轉換類型為'Apache.Ignite.Core.Impl.Binary.Binary.BinaryWriter'的對象來類型為'System.IConvertible'的錯誤”錯誤。

根據https://apacheignite-net.readme.io/docs/serialization上的信息,DataTable實現ISerializable並具有Seri​​alizable屬性。 它應該能夠序列化。 我不確定為什么會收到此錯誤。 有什么想法嗎?

環境:Ignite.NET 2.1,Visual Studio 2015

我已經重現了這個問題,我想說這是System.Data.DataTable的錯誤。 這是代碼

public virtual void GetObjectData(SerializationInfo info, StreamingContext context) {
    SerializationFormat remotingFormat = RemotingFormat;
    bool isSingleTable = context.Context != null ? Convert.ToBoolean(context.Context, CultureInfo.InvariantCulture) : true;
    SerializeDataTable(info, context, isSingleTable, remotingFormat);
}

異常來自

Convert.ToBoolean(context.Context, CultureInfo.InvariantCulture)

可以將Context轉換為bool的假設看起來不正確,請參見MSDN

另外:與StreamingContext相關聯的任何其他信息。

Ignite使用它來存儲BinaryWriter對象以供內部使用。

無論如何,.NET框架不會得到修復,因此我提交了一個Ignite.NET錯誤: https ://issues.apache.org/jira/browse/IGNITE-5927

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM