インスタンスを挿入するのにを使用し、それらを更新するためにcollection.Save<T>
を使用できます。MongoDbのc#ドライバが特定のインスタンスを削除するための同様のメソッドを提供しない理由はありません。それらのRemove
メソッドは、Query.EQ("Id", BsonValue.Create(id))
のようなハードコーディングプロパティ名を必要とすると思われるIMongoQuery引数を要求します。 Remove<T>
のようなインスタンスを削除するか、RemoveByIdを使用するか、特定の入力タイプを使用してLINQのようなクエリを構築するか、プロパティのハードコードを取り除くための方法を指定したいと思っています。エンティティフレームワークPOCO。そんなことはありますか?MongoDb用.NETドライバ:プロパティ名のハードコーディングを避ける方法はありますか?
UPDATE:[OK]を、私はそれを行うための一つの方法を見つけた:
IMongoQuery mq = new QueryDocument(entity.ToBsonDocument());
customers.Remove(mq);
は、それが唯一の方法ですか?
おかげ
しかし、私はあなたがこのことをどのようにテンプレートすることができるかわかりません。なぜなら、IDはそのような特定のものだからです。テンプレート関数を使用する場合、IDをどのように指定しますか? – Kiril
私はIdを例に挙げていますが、問題はより広いです:削除操作のエンティティをプロパティ名をハードコーディングしないように指定する方法はありますか?方法の1つは、エンティティへの参照を指定することかもしれません、他の方法は、アイデアの値ではなく、その名前(メソッドcollection.FindOneById()に等しい)を指定することです、理想的に私はLINQのようなメソッドを持ってうれしい=>エンティティ.Id == 1)。とにかく私はデータベースの属性名をハードコーディングするのが嫌いです – YMC