在C#中使用代码与mongodb交互时出现的问题

本文关键字:交互 问题 mongodb 代码 | 更新日期: 2023-09-27 18:27:45

我的代码如下:

            try
        {
            MongoDatabase mtest1 = mongoServer.GetDatabase("ews", mC);
            MongoCollection<EliteGuard> ecollection1 = mtest1.GetCollection<EliteGuard>("EliteGuard");
            int intC = FindUser(comboBox1.Text.ToString());
            int intCount = 0;
            foreach (EliteGuard t in ecollection1.FindAll())
            {
                if (t.product_key.Equals(comboBox1.Text.ToString()))
                {
                    intCount++;
                }
            }
            if (intC <= intCount)
            {
                MessageBox.Show("Total no. of Serial Key is generated.", "Elite Manager Information", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
        }
        catch (MongoConnectionException mcex)
        {
            MessageBox.Show("Unable to connect to Server. Please try Again.", "Elite Manager Information", MessageBoxButtons.OK, MessageBoxIcon.Error);
            return;
        }
        catch (Exception ex)
        {
            return;
        }

错误:

反序列化的product_key属性时出错class Serial_Key_Generation.Form5+EliteGuard:输入字符串不在正确的格式。

StackTrace:位于MongoDB。Bson.Serialization.BsonClassMapSerializer.DeserializeMember(BsonReaderbsonReader,Object obj,BsonMemberMap memberMap)MongoDB。Bson.Serialization.BsonClassMapSerializer.Deserialize(BsonReaderbsonReader,类型nomialType,类型actualType,IBsonSerializationOptions选项)MongoDB。Bson.Serialization.BsonClassMapSerializer.Deserialize(BsonReaderbsonReader、Type nomialType、IBsonSerializationOptions选项)MongoDB。Bson.Serialization.BsonSerializer.Deserialize(BsonReaderbsonReader、Type nomialType、IBsonSerializationOptions选项)MongoDB驱动程序Internal.MongoReplyMessage 1.ReadFrom(BsonBuffer buffer, IBsonSerializationOptions serializationOptions) at MongoDB.Driver.Internal.MongoConnection.ReceiveMessage[TDocument](BsonBinaryReaderSettings readerSettings, IBsonSerializationOptions serializationOptions) at MongoDB.Driver.MongoCursorEnumerator 1.GetReply(MongoConnection连接,MongoRequestMessage消息)MongoDB驱动程序.MongoCursor枚举器1.GetFirst() at MongoDB.Driver.MongoCursorEnumerator 1.MoveNext()位于Serial_Key_Generation.Form5.comboBox1_SelectedIndexChanged(对象sender,EventArgs e)中的D:''Projects''Serial Key Generation''Serial KeyGeneration''Form5.cs:line 94

但是相同类型的代码在另一个Form上正常工作。

在C#中使用代码与mongodb交互时出现的问题

反序列化的product_key属性时出错class Serial_Key_Generation.Form5+EliteGuard:输入字符串不在正确的格式。

EliteGuard类的实现与数据库数据之间存在不一致。该类中的product_key属性与其在数据库中的等效属性不匹配。您可能在类定义中将其定义为错误的数据类型。它似乎在期待一根绳子,但没有得到。您需要在类定义或DB中更改product_key的数据类型(类定义可能更容易)。

但是相同类型的代码在另一个表单上正常工作

这并不能告诉我什么。你是从同一个数据库加载数据吗;集合,您使用的是同一个类吗?如果没有更多的信息,很难回答这个问题。无论如何,听起来有些东西是不同的,因为它在反序列化方面没有问题。试着在每个场景中遍历代码,看看不同形式之间有什么不同。这可能只是你忽略的一个小差异。有一个单独的工作示例应该可以更容易地看到不起作用的表单有什么问题。

是的,连接的数据库和代码与另一个表单中的相同。