0

私は Mongo-C# 環境にいて、しばらくの間 Mongo 1.3.x DLL を使用して Mongo に対してコーディングを行ってきました。最近、それを 1.4.2 に更新しましたが、以前のバージョンの Mongo DLL が処理している間に気付いた問題に直面するまで、他のすべては問題ありませんでした。

update.SetWrapped(property.Name, value);

値がnullの場合のすべてのファイルですが、最近のバージョンではそれが気に入らず、nullreference例外がスローされます。

ここでの問題は、Null 値を受け入れることができるようにしたいということです。誰もこの問題に直面したことがありますか?はいの場合、どのように対処しましたか?

4

2 に答える 2

1

これが導入されたときに重大な変更がありました。これには BsonNull.Value を使用する必要があります。したがって、コードは次のようになります。

update.SetWrapped(property.Name, BsonValue.Create(value) ?? BsonNull.Value);
于 2012-05-24T01:54:39.503 に答える
0

T は BsonValue ではなく POCO であり、T のシリアライザーが C# null をシリアル化する方法を決定するため、C# null を Update.SetWrapped<T> に渡すことができたはずです。

このための JIRA チケットを作成しました。

https://jira.mongodb.org/browse/CSHARP-486

1.4 より前のバージョンの C# ドライバーは NullReferenceException をスローしませんでしたが、期待どおりにプロパティを BSON null に更新しなかったことに注意してください (C# null を SetWrapped に渡すと、以前のバージョンでは SetWrapped がノーオペレーションになりました)。

C# の null 処理の基本的な規則は明確です。

  1. C# null は有効な BsonValue ではありません。代わりに BsonNull.Value を使用してください
  2. C# null は POCO に対して有効であり、おそらく BSON null としてシリアル化されます (ただし、技術的には、POCO のシリアライザーは別の表現を選択できます)。
于 2012-06-04T15:21:39.950 に答える