MongoDB C# GUID не поддерживается в словаре или его драйвере ошибокC#

Место общения программистов C#
Anonymous
 MongoDB C# GUID не поддерживается в словаре или его драйвере ошибок

Сообщение Anonymous »

Версия драйвера: версия = «
Привет. Приветствую, я нашел странную вещь. При обновлении документа, если поле содержит словарь , происходит исключение.
Настройки :
BsonSerializer.TryRegisterSerializer(new GuidSerializer(BsonType.String));
< /code>
doc: < /p>
public class Lib
{
public Dictionary Games { get; set; } = [];
public Dictionary GamesX { get; set; } = [];
}
< /code>
  • запрос с помощью словаря < /code> ошибка: < /p>
    var uu = строители .Update.set (f => f.games [gameId] .status, gamelibstatus.backlog);
Ошибка: < /p>
MongoDB.Driver.Linq.ExpressionNotSupportedException: Expression not supported: f.Games.get_Item(229341dc-7125-4093-b407-7092245c7d9b).
at MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToFilterTranslators.ToFilterFieldTranslators.GetItemMethodToFilterFieldTranslator.Translate(TranslationContext context, Expression expression, MethodInfo method, Expression fieldExpression, ReadOnlyCollection`1 arguments)
at MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToFilterTranslators.ToFilterFieldTranslators.GetItemMethodToFilterFieldTranslator.Translate(TranslationContext context, MethodCallExpression expression)
at MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToFilterTranslators.ToFilterFieldTranslators.MethodCallExpressionToFilterFieldTranslator.Translate(TranslationContext context, MethodCallExpression expression)
at MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToFilterTranslators.ToFilterFieldTranslators.ExpressionToFilterFieldTranslator.Translate(TranslationContext context, Expression expression)
at MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToFilterTranslators.ToFilterFieldTranslators.MemberExpressionToFilterFieldTranslator.Translate(TranslationContext context, MemberExpression memberExpression)
at MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToFilterTranslators.ToFilterFieldTranslators.ExpressionToFilterFieldTranslator.Translate(TranslationContext context, Expression expression)
at MongoDB.Driver.Linq.LinqProviderAdapter.TranslateExpressionToField[TDocument,TField](Expression`1 expression, IBsonSerializer`1 documentSerializer, IBsonSerializerRegistry serializerRegistry, ExpressionTranslationOptions translationOptions, Boolean allowScalarValueForArrayField)
at MongoDB.Driver.ExpressionFieldDefinition`2.Render(RenderArgs`1 args)
at MongoDB.Driver.OperatorUpdateDefinition`2.Render(RenderArgs`1 args)
at MongoDB.Driver.CombinedUpdateDefinition`1.Render(RenderArgs`1 args)
at MongoDB.Driver.MongoCollectionImpl`1.ConvertWriteModelToWriteRequest(WriteModel`1 model, Int32 index, RenderArgs`1 renderArgs)
at MongoDB.Driver.MongoCollectionImpl`1.c__DisplayClass83_0.b__0(WriteModel`1 model, Int32 index)
at System.Linq.Enumerable.SelectIterator[TSource,TResult](IEnumerable`1 source, Func`3 selector)+MoveNext()
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at MongoDB.Driver.Core.Operations.BulkMixedWriteOperation..ctor(CollectionNamespace collectionNamespace, IEnumerable`1 requests, MessageEncoderSettings messageEncoderSettings)
at MongoDB.Driver.MongoCollectionImpl`1.CreateBulkWriteOperation(IClientSessionHandle session, IEnumerable`1 requests, BulkWriteOptions options, RenderArgs`1 renderArgs)
at MongoDB.Driver.MongoCollectionImpl`1.BulkWriteAsync(IClientSessionHandle session, IEnumerable`1 requests, BulkWriteOptions options, CancellationToken cancellationToken)
at MongoDB.Driver.MongoCollectionImpl`1.UsingImplicitSessionAsync[TResult](Func`2 funcAsync, CancellationToken cancellationToken)
at MongoDB.Driver.MongoCollectionBase`1.UpdateOneAsync(FilterDefinition`1 filter, UpdateDefinition`1 update, UpdateOptions options, Func`3 bulkWriteAsync)
< /code>
  • Но затем используйте словарь < /code> все работают нормально: < /p>
    var uu = builders.update.set (f => f.gamesx [gameid.tostring ()]. ​​Статус, g


Подробнее здесь: https://stackoverflow.com/questions/794 ... bug-driver

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