Ошибка двухуровневого наследования синхронизации RealmsC#

Место общения программистов C#
Anonymous
Ошибка двухуровневого наследования синхронизации Realms

Сообщение Anonymous »

У меня есть проект .net maui (поэтому мы говорим о C#/.net), в котором я хочу реализовать синхронизацию устройств mongodb atlas: моя модель данных состоит из двух классов (

Код: Выделить всё

LockerEntry
и LockerItemEntry), который наследуется от общего родительского элемента (), который наследуется от RealmObject (довольно просто).
Мое приложение области (созданное из панели управления Web Mongo) имеет режим разработчика, потому что я хочу, чтобы схема и коллекция баз данных были создано на основе моей модели данных.
Я обнаружил, что при запуске моего приложения .net maui коллекция и схема DbEntry создаются нормально (фактически, это нежелательно, но я уже понял, что аннотирование класса атрибутом Realms.Ignored предотвратит это), тогда как LockerEntry и LockerItemEntry нет, и инициализация области выдает ошибку, говорящую: «Класс LockerEntry не входит в ограниченный набор классов для этой области (параметр «T»)»
Здесь фрагмент LockerEntry (один из двух синхронизируемых классов) и DbEntry (родительский класс):

Код: Выделить всё

public class LockerEntry : DbEntry
{
public string? Name {  get; set; }

public override void FromPersisted(object persistedObject)
{
Locker locker = (Locker)persistedObject;

Id = locker.Id;

Name = EncryptionHelper.EncryptString(DependencyHelper.DataModel.PassKey, locker.Name);
}
}

Код: Выделить всё

public abstract class DbEntry : RealmObject, IDbEntry
{
[PrimaryKey]
[SQLitePrimaryKey]
[MapTo("_id")]
public Guid Id { get; set; }

public abstract void FromPersisted(object persistedObject);
}
и для инициализации области я использую этот код:

Код: Выделить всё

public async Task InitRealmAsync()
{
RealmsApp realmsApp = RealmsApp.Create(new AppConfiguration("")
{
BaseFilePath = DirectoryHelper.DBFolder
});

await realmsApp.LogInAsync(Credentials.ApiKey(""));

FlexibleSyncConfiguration config = new(realmsApp.CurrentUser ?? throw new ArgumentNullException())
{
PopulateInitialSubscriptions = (realm) =>
{
var lockerEntries = realm.All();
var lockerItemEntries = realm.All();

realm.Subscriptions.Add(lockerEntries);
realm.Subscriptions.Add(lockerItemEntries);
}
};

realm = await Realm.GetInstanceAsync(config);

var lockerEntries = realm.All();
var lockerItemEntries = realm.All();
}
Сделать LockerEntry и LockerItemEntry наследующими непосредственно от RealmObject вместо DbEntry, а затем RealmObject будет работать, но тогда Мне следует продублировать код, содержащийся в родительском классе DbEntry, но я бы предпочел этого не делать…
Можете ли вы дать несколько предложений?
Обсуждаем заранее.

Подробнее здесь: https://stackoverflow.com/questions/785 ... ance-error

Вернуться в «C#»