4

10gen mondgo db c#ドライバーを使用しています。次のクラスがあります

[BsonId]
public ObjectId Id { get; set; }
public int AttemptId { get; set; }
public int UserId { get; set; }
public int QId { get; set; }
public string UserInput { get; set; }  
public string Feedback{ get; set; }

デフォルトでは、UserInputまたはFeedback(任意の文字列)の値を送信しない場合、mongodbはそれらを。として配置しますnullstring.emptyデータの挿入中またはフェッチ中にこれをオーバーライドする方法はありますか?設定を試み[BsonDefaultValue("")]ましたが、これも機能しませんでした。

4

1 に答える 1

17

[BsonDefaultValue("")] は、対応するフィールドの値を持たないドキュメントをデータベースから読み取る場合にのみ適用されます。メモリ内に作成する新しいオブジェクトに null 以外の値を持たせたい場合は、コンストラクターでその値を設定する必要があります。また、フィールドがnullの場合にオブジェクトをデータベースに保存すると、それが保存されて読み戻されます。

したがって、コンストラクターでデフォルト値を設定して、メモリ内に作成された (そしておそらくデータベースに挿入された) 新しいオブジェクトを処理し、[BsonDefaultValue] を使用して、対応するフィールドを持たないドキュメントの読み取りを処理します。

于 2012-04-10T14:55:31.477 に答える