Код: Выделить всё
public class ChildrenMapMetadata
{
public List Groups { get; set; }
public List Rooms { get; set; }
}
Код: Выделить всё
public class DbGroupMapMetadata
{
public Guid Id { get; set; }
public Guid ParentMapId { get; set; }
public string ObjectId { get; set; }
public string Name { get; set; }
public bool IsGroup { get; set; }
internal static void Build(BsonClassMap classMap)
{
classMap.AutoMap();
classMap.SetDiscriminator(nameof(DbGroupMapMetadata));
classMap.SetDiscriminatorIsRequired(true);
classMap.MapIdMember(mapMetadata => mapMetadata.Id)
.SetIdGenerator(new GuidGenerator())
.SetSerializer(new GuidSerializer(BsonType.String));
classMap.MapMember(mapMetadata => mapMetadata.ParentMapId)
.SetSerializer(new GuidSerializer(BsonType.String));
classMap.MapMember(mapMetadata => mapMetadata.ObjectId);
classMap.MapMember(mapMetadata => mapMetadata.Name);
classMap.MapMember(mapMetadata => mapMetadata.IsGroup);
}
}
Код: Выделить всё
public class DbMapMetadata
{
public Guid Id { get; set; }
public string NameGLB { get; set; }
public bool IsInitialMap { get; set; }
public bool HasPortals { get; set; }
public bool HasChildren { get; set; }
public List Portals { get; set; }
public Guid? ParentMap { get; set; }
public DbChildrenMapMetadata Children { get; set; }
internal static void Build(BsonClassMap classMap)
{
classMap.AutoMap();
classMap.SetDiscriminator(nameof(DbMapMetadata));
classMap.SetDiscriminatorIsRequired(true);
classMap.MapIdMember(mapMetadata => mapMetadata.Id)
.SetIdGenerator(new GuidGenerator())
.SetSerializer(new GuidSerializer(BsonType.String));
classMap.MapMember(mapMetadata => mapMetadata.ParentMap)
.SetSerializer(new NullableSerializer(new GuidSerializer(BsonType.String)));
}
}
Код: Выделить всё
using MongoDB.Bson.Serialization;
using Overlord.Modules.GeoMap.Infrastructure.MongoDb.Entities;
using Overlord.Shared.Infrastructure.MongoDb.Abstractions;
namespace Overlord.Modules.GeoMap.Infrastructure.MongoDb.Context;
public class MetadataDbContext(IMongoDatabase database) : DbContextBase(database)
{
public IMongoCollection MapMetadata { get; set; }
protected override void OnConfiguring()
{
BsonClassMap.RegisterClassMap(classMap => DbMapMetadata.Build(classMap));
BsonClassMap.RegisterClassMap(classMap => DbPortalMapMetadata.Build(classMap));
BsonClassMap.RegisterClassMap(classMap => DbChildrenMapMetadata.Build(classMap));
BsonClassMap.RegisterClassMap(classMap => DbGroupMapMetadata.Build(classMap));
BsonClassMap.RegisterClassMap(classMap => DbRoomMapMetadata.Build(classMap));
}
}
System.FormatException: 'Произошла ошибка при десериализации свойства
Children класса
Overlord.Modules.GeoMap.Infrastructure.MongoDb.Entities.DbMapMetadata:
Произошла ошибка при десериализации свойства Groups класса
Overlord.Modules.GeoMap.Infrastructure.MongoDb.Entities.DbChildrenMapMetadata:
Идентификатор элемента не соответствует ни одному полю или свойству класса
Overlord.Modules.GeoMap.Infrastructure.MongoDb.Entities.DbGroupMapMetadata.'
и мой вопрос:
Как мне правильно сопоставить это, чтобы данные были правильно связаны
и я не получаю ошибка?
Подробнее здесь: https://stackoverflow.com/questions/788 ... ngo-to-net
Мобильная версия