Ошибка конфликтующих идентификаторов полей в тонком клиенте Ignite C#

Я пытаюсь сохранить сущность в Ignite-Cache, используя тонкий клиент С#. У меня есть сценарий ниже

public class A
    {
        DateTime StartDate { get; set; }
    }

    public class B:A
    {
        DateTime StartDate { get; set; }
    }

Когда я пытаюсь сохранить экземпляр объекта класса B в хранилище воспламенения, это дает мне следующую ошибку.

IgniteThinClient.GetCache<Tkey, TValue>("CacheName")

Это дает мне ошибку ниже

Apache.Ignite.Core.Binary.BinaryObjectException: «Конфликтующие идентификаторы полей [type=B, field1=StartDate, field2=StartDate, fieldId=104069929]»

Ссылки на похожие проблемы

https://issues.apache.org/jira/browse/IGNITE-8588

Apache Ignite 2.1: Получение ошибки "Конфликтующие идентификаторы типов" после обновления с версии 2.0

Как отключить хранение двоичных объектов для тонкого клиента С#? Поможет ли это решить этот вопрос?


person Gopu_Tunas    schedule 27.09.2019    source источник
comment
Вы уверены, что хотите иметь такую ​​иерархию классов? Обычно это результат ошибки: либо используйте override, либо new для свойства с тем же именем в производном классе.   -  person Pavel Tupitsyn    schedule 30.09.2019
comment
Даже если я буду использовать new или override для свойства. Это все еще дает ту же ошибку.   -  person Gopu_Tunas    schedule 01.10.2019


Ответы (1)


Ознакомьтесь с документацией по сериализации. Вы можете попытаться реализовать IBinarizable в B и написать только то поле, которое вам нужно (или поместить оба под разными именами). Ваш пробег может отличаться.

person alamar    schedule 27.09.2019
comment
Есть ли другой способ сделать это, поскольку у меня есть огромное количество объектов с вышеуказанной проблемой? - person Gopu_Tunas; 01.10.2019
comment
Или есть какой-либо атрибут Ignore для игнорирования свойства? - person Gopu_Tunas; 01.10.2019
comment
Я думаю, вы можете попробовать пометить эти свойства с помощью [NotSerialized]. Можешь попробовать? - person alamar; 01.10.2019