私の開発環境に関する情報は次のとおりです。
モンゴDB 3.0.0
MongoDB C# ドライバー バージョン 1.7.0.4714
マイクロソフト ビジュアル スタジオ プロフェッショナル 2013
.NET フレームワーク 4.0
オブジェクトが埋め込みドキュメントとして使用される C# クラスを次に示します。
public class Location
{
public double lng { get; set; }
public double lat { get; set; }
}
人の家を表すために使用される C# クラスを次に示します。
public class House
{
public String houseDescription { get; set; }
public Location locOfHouse { get; set; }
}
locOfHouse = [] を設定するモバイル アプリケーション コンポーネントによって使用される C# API モジュールがあります。
これは、House と呼ばれる MongoDB コレクションに、次のドキュメントを含めることができることを意味します。
{
"_id" : ObjectId("56c455ee26b49c090019b439"),
"houseDescription" : "Multi-floor house with elevator and staircase",
"locOfHouse" : []
}
私の C# アプリケーションでは、次のクラスを BSON にマッピングしています。
if (false == BsonClassMap.IsClassMapRegistered(typeof(House)))
{
BsonClassMap.RegisterClassMap<House>(cm =>
{
cm.AutoMap();
cm.MapProperty<Location>(c => (Location)c.locOfHouse);
});
}
ただし、Web ベースの C# アプリケーションは、前述のデータを取得するときに次のエラーをスローします。
An error occurred while deserializing the locOfHouse property of class
House: Expected a nested document representing the serialized form of a Location
value, but found a value of type Array instead.
前述のエラーがスローされないように C# アプリケーション コードを変更するにはどうすればよいですか?