0

I get an error message that basically says it can't deserailize MajorRequirements because it violates type "Tvalue" (full error log below).

I have tried changing the type of MajorRequirements in Majors.cs to BsonDocument, BsonDocument?, Document and Document? but still get error messages. Is it as simple as using the wrong variable type (and if yes how do I know which one to use?) or something else?

I have also tried changing MajorRequirements in the database to an object and assigning keys in the format of Class# and tried using: to access the data that way but that also crashed.

example document:

{
    "_id" : ObjectId("639d413260af0c7b888c6fef"),
    "Major" : "Sociology",
    "MajorRequirements" : [
        "Introductory Sociology",
        "Sociology Of Caring",
        "Sociology Through The Arts",
        "Social Problems",
        "Research Methods",
        "Sociological Theory I",
        "Sociological Theory II",
        "Research Method II",
        "Sociology Of Music",
        "Senior Sociology Seminar"
    ]
}

Majors.cs

using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;

namespace project
{
    public class Majors
    {
        [BsonId]
        public BsonObjectId Id { get; set; }

        [BsonElement("Major")]
        public string Major {get; set;}

        [BsonElement("MajorRequirements")]
        public Array? MajorRequirements { get; set; } = null;
    }
}

razor page

@page "/page"
<h3>table</h3>

<RadzenDataGrid AllowFiltering="true" AllowColumnResize="false" AllowAlternatingRows="true" FilterMode="FilterMode.Advanced" AllowSorting="true" PageSize="20" AllowPaging="true" PagerHorizontalAlign="HorizontalAlign.Left" ShowPagingSummary="true" Data="@queryMajor" TItem="Majors" ColumnWidth="300px" LogicalFilterOperator="LogicalFilterOperator.Or">
    <Columns>
        <RadzenDataGridColumn TItem="Majors" Property="Major" Title="test" Frozen="true" Width="0px" />
        <RadzenDataGridColumn TItem="Majors" Property="MajorRequirements.0" Title="test" Frozen="true" Width="0px" />
    </Columns>
</RadzenDataGrid>

@code
{
    Mongo mongo = new Mongo("database");
    List<Majors> queryMajor;

    protected override async Task OnInitializedAsync()
    {
        queryMajor = mongo.LoadRecord<Majors>("majors");
    }
}

mongo.cs

public class Mongo
{
  public Mongo(string database)
  {
    //connection string is here, just omitted from this example
  }
  
  public List<T> LoadRecord<T>(string table)
  {
    var collection = db.GetCollection<T>(table);
    return collection.Find(new BsonDocument()).ToList();
  }
  
}

full error:

warn: Microsoft.AspNetCore.Components.Server.Circuits.RemoteRenderer[100]
      Unhandled exception rendering component: An error occurred while deserializing the MajorRequirements property of class CollegeWebsite2.Database.Majors: GenericArguments[0], 'System.Array', on 'MongoDB.Bson.Serialization.Serializers.EnumerableInterfaceImplementerSerializer`1[TValue]' violates the constraint of type 'TValue'.
      System.FormatException: An error occurred while deserializing the MajorRequirements property of class CollegeWebsite2.Database.Majors: GenericArguments[0], 'System.Array', on 'MongoDB.Bson.Serialization.Serializers.EnumerableInterfaceImplementerSerializer`1[TValue]' violates the constraint of type 'TValue'.
       ---> System.ArgumentException: GenericArguments[0], 'System.Array', on 'MongoDB.Bson.Serialization.Serializers.EnumerableInterfaceImplementerSerializer`1[TValue]' violates the constraint of type 'TValue'.
       ---> System.TypeLoadException: GenericArguments[0], 'System.Array', on 'MongoDB.Bson.Serialization.Serializers.EnumerableInterfaceImplementerSerializer`1[TValue]' violates the constraint of type parameter 'TValue'.
         at System.RuntimeTypeHandle.Instantiate(QCallTypeHandle handle, IntPtr* pInst, Int32 numGenericArgs, ObjectHandleOnStack type)
         at System.RuntimeType.MakeGenericType(Type[] instantiation)
         --- End of inner exception stack trace ---
         at System.RuntimeType.ValidateGenericArguments(MemberInfo definition, RuntimeType[] genericArguments, Exception e)
         at System.RuntimeType.MakeGenericType(Type[] instantiation)
         at MongoDB.Bson.Serialization.BsonSerializationProviderBase.CreateGenericSerializer(Type serializerTypeDefinition, Type[] typeArguments, IBsonSerializerRegistry serializerRegistry)
         at MongoDB.Bson.Serialization.CollectionsSerializationProvider.GetCollectionSerializer(Type type, IBsonSerializerRegistry serializerRegistry)
         at MongoDB.Bson.Serialization.CollectionsSerializationProvider.GetSerializer(Type type, IBsonSerializerRegistry serializerRegistry)
         at MongoDB.Bson.Serialization.BsonSerializerRegistry.CreateSerializer(Type type)
         at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory)
         at MongoDB.Bson.Serialization.BsonSerializerRegistry.GetSerializer(Type type)
         at MongoDB.Bson.Serialization.BsonSerializer.LookupSerializer(Type type)
         at MongoDB.Bson.Serialization.BsonMemberMap.GetSerializer()
         at MongoDB.Bson.Serialization.BsonClassMapSerializer`1.DeserializeMemberValue(BsonDeserializationContext context, BsonMemberMap memberMap)
         --- End of inner exception stack trace ---
         at MongoDB.Bson.Serialization.BsonClassMapSerializer`1.DeserializeMemberValue(BsonDeserializationContext context, BsonMemberMap memberMap)
         at MongoDB.Bson.Serialization.BsonClassMapSerializer`1.DeserializeClass(BsonDeserializationContext context)
         at MongoDB.Bson.Serialization.BsonClassMapSerializer`1.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
         at MongoDB.Bson.Serialization.IBsonSerializerExtensions.Deserialize[TValue](IBsonSerializer`1 serializer, BsonDeserializationContext context)
         at MongoDB.Driver.Core.Operations.CursorBatchDeserializationHelper.DeserializeBatch[TDocument](RawBsonArray batch, IBsonSerializer`1 documentSerializer, MessageEncoderSettings messageEncoderSettings)
         at MongoDB.Driver.Core.Operations.FindOperation`1.CreateFirstCursorBatch(BsonDocument cursorDocument)
         at MongoDB.Driver.Core.Operations.FindOperation`1.CreateCursor(IChannelSourceHandle channelSource, IChannelHandle channel, BsonDocument commandResult)
         at MongoDB.Driver.Core.Operations.FindOperation`1.Execute(RetryableReadContext context, CancellationToken cancellationToken)
         at MongoDB.Driver.Core.Operations.FindOperation`1.Execute(IReadBinding binding, CancellationToken cancellationToken)
         at MongoDB.Driver.OperationExecutor.ExecuteReadOperation[TResult](IReadBinding binding, IReadOperation`1 operation, CancellationToken cancellationToken)
         at MongoDB.Driver.MongoCollectionImpl`1.ExecuteReadOperation[TResult](IClientSessionHandle session, IReadOperation`1 operation, ReadPreference readPreference, CancellationToken cancellationToken)
         at MongoDB.Driver.MongoCollectionImpl`1.ExecuteReadOperation[TResult](IClientSessionHandle session, IReadOperation`1 operation, CancellationToken cancellationToken)
         at MongoDB.Driver.MongoCollectionImpl`1.FindSync[TProjection](IClientSessionHandle session, FilterDefinition`1 filter, FindOptions`2 options, CancellationToken cancellationToken)
         at MongoDB.Driver.MongoCollectionImpl`1.<>c__DisplayClass46_0`1.<FindSync>b__0(IClientSessionHandle session)
         at MongoDB.Driver.MongoCollectionImpl`1.UsingImplicitSession[TResult](Func`2 func, CancellationToken cancellationToken)
         at MongoDB.Driver.MongoCollectionImpl`1.FindSync[TProjection](FilterDefinition`1 filter, FindOptions`2 options, CancellationToken cancellationToken)
         at MongoDB.Driver.FindFluent`2.ToCursor(CancellationToken cancellationToken)
         at MongoDB.Driver.IAsyncCursorSourceExtensions.ToList[TDocument](IAsyncCursorSource`1 source, CancellationToken cancellationToken)
         at Mongo.LoadRecord[T](String table) in D:\programming files\asp.net core\CollegeWebsite2\Database\Mongo.cs:line 47
         at CollegeWebsite2.Pages.visitor.viewrequirements.major.Sociology.OnInitializedAsync() in D:\programming files\asp.net core\CollegeWebsite2\Pages\visitor\viewrequirements\major\Sociology.razor:line 18
         at Microsoft.AspNetCore.Components.ComponentBase.RunInitAndSetParametersAsync()
fail: Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost[111]
      Unhandled exception in circuit '7X6WYq-CLSwxf1o0RLnJ9gn48G4hoSdKUMj51As2ikg'.
      System.FormatException: An error occurred while deserializing the MajorRequirements property of class CollegeWebsite2.Database.Majors: GenericArguments[0], 'System.Array', on 'MongoDB.Bson.Serialization.Serializers.EnumerableInterfaceImplementerSerializer`1[TValue]' violates the constraint of type 'TValue'.
       ---> System.ArgumentException: GenericArguments[0], 'System.Array', on 'MongoDB.Bson.Serialization.Serializers.EnumerableInterfaceImplementerSerializer`1[TValue]' violates the constraint of type 'TValue'.
       ---> System.TypeLoadException: GenericArguments[0], 'System.Array', on 'MongoDB.Bson.Serialization.Serializers.EnumerableInterfaceImplementerSerializer`1[TValue]' violates the constraint of type parameter 'TValue'.
         at System.RuntimeTypeHandle.Instantiate(QCallTypeHandle handle, IntPtr* pInst, Int32 numGenericArgs, ObjectHandleOnStack type)
         at System.RuntimeType.MakeGenericType(Type[] instantiation)
         --- End of inner exception stack trace ---
         at System.RuntimeType.ValidateGenericArguments(MemberInfo definition, RuntimeType[] genericArguments, Exception e)
         at System.RuntimeType.MakeGenericType(Type[] instantiation)
         at MongoDB.Bson.Serialization.BsonSerializationProviderBase.CreateGenericSerializer(Type serializerTypeDefinition, Type[] typeArguments, IBsonSerializerRegistry serializerRegistry)
         at MongoDB.Bson.Serialization.CollectionsSerializationProvider.GetCollectionSerializer(Type type, IBsonSerializerRegistry serializerRegistry)
         at MongoDB.Bson.Serialization.CollectionsSerializationProvider.GetSerializer(Type type, IBsonSerializerRegistry serializerRegistry)
         at MongoDB.Bson.Serialization.BsonSerializerRegistry.CreateSerializer(Type type)
         at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory)
         at MongoDB.Bson.Serialization.BsonSerializerRegistry.GetSerializer(Type type)
         at MongoDB.Bson.Serialization.BsonSerializer.LookupSerializer(Type type)
         at MongoDB.Bson.Serialization.BsonMemberMap.GetSerializer()
         at MongoDB.Bson.Serialization.BsonClassMapSerializer`1.DeserializeMemberValue(BsonDeserializationContext context, BsonMemberMap memberMap)
         --- End of inner exception stack trace ---
         at MongoDB.Bson.Serialization.BsonClassMapSerializer`1.DeserializeMemberValue(BsonDeserializationContext context, BsonMemberMap memberMap)
         at MongoDB.Bson.Serialization.BsonClassMapSerializer`1.DeserializeClass(BsonDeserializationContext context)
         at MongoDB.Bson.Serialization.BsonClassMapSerializer`1.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
         at MongoDB.Bson.Serialization.IBsonSerializerExtensions.Deserialize[TValue](IBsonSerializer`1 serializer, BsonDeserializationContext context)
         at MongoDB.Driver.Core.Operations.CursorBatchDeserializationHelper.DeserializeBatch[TDocument](RawBsonArray batch, IBsonSerializer`1 documentSerializer, MessageEncoderSettings messageEncoderSettings)
         at MongoDB.Driver.Core.Operations.FindOperation`1.CreateFirstCursorBatch(BsonDocument cursorDocument)
         at MongoDB.Driver.Core.Operations.FindOperation`1.CreateCursor(IChannelSourceHandle channelSource, IChannelHandle channel, BsonDocument commandResult)
         at MongoDB.Driver.Core.Operations.FindOperation`1.Execute(RetryableReadContext context, CancellationToken cancellationToken)
         at MongoDB.Driver.Core.Operations.FindOperation`1.Execute(IReadBinding binding, CancellationToken cancellationToken)
         at MongoDB.Driver.OperationExecutor.ExecuteReadOperation[TResult](IReadBinding binding, IReadOperation`1 operation, CancellationToken cancellationToken)
         at MongoDB.Driver.MongoCollectionImpl`1.ExecuteReadOperation[TResult](IClientSessionHandle session, IReadOperation`1 operation, ReadPreference readPreference, CancellationToken cancellationToken)
         at MongoDB.Driver.MongoCollectionImpl`1.ExecuteReadOperation[TResult](IClientSessionHandle session, IReadOperation`1 operation, CancellationToken cancellationToken)
         at MongoDB.Driver.MongoCollectionImpl`1.FindSync[TProjection](IClientSessionHandle session, FilterDefinition`1 filter, FindOptions`2 options, CancellationToken cancellationToken)
         at MongoDB.Driver.MongoCollectionImpl`1.<>c__DisplayClass46_0`1.<FindSync>b__0(IClientSessionHandle session)
         at MongoDB.Driver.MongoCollectionImpl`1.UsingImplicitSession[TResult](Func`2 func, CancellationToken cancellationToken)
         at MongoDB.Driver.MongoCollectionImpl`1.FindSync[TProjection](FilterDefinition`1 filter, FindOptions`2 options, CancellationToken cancellationToken)
         at MongoDB.Driver.FindFluent`2.ToCursor(CancellationToken cancellationToken)
         at MongoDB.Driver.IAsyncCursorSourceExtensions.ToList[TDocument](IAsyncCursorSource`1 source, CancellationToken cancellationToken)
         at Mongo.LoadRecord[T](String table) in D:\programming files\asp.net core\CollegeWebsite2\Database\Mongo.cs:line 47
         at CollegeWebsite2.Pages.visitor.viewrequirements.major.Sociology.OnInitializedAsync() in D:\programming files\asp.net core\CollegeWebsite2\Page\visitor\viewrequirements\major\Sociology.razor:line 18
- at Microsoft.AspNetCore.Components.ComponentBase.R)

0 Answers0