-2

私は C# と MongoDB の両方に不慣れで、オンラインのリポジトリ パターン ( http://www.primaryobjects.com/cms/article137.aspx ) を使用して、ネストされた配列にアイテムを挿入/更新/保存する際に問題が発生しています。ここにいくつかのコードがあります:

モデル:

public class BlogModel
{
    [BsonId]
    public ObjectId Id { get; set; }
    public DateTime Date { get; set; }
    [Required]
    public string Title { get; set; }
    [Required]
    public string Body { get; set; }
    public string Author { get; set; }
    public IList<CommentModel> Comments { get; set; }
}

public class CommentModel
{
    [BsonId]
    public ObjectId Id { get; set; }
    public DateTime Date { get; set; }
    public string Author { get; set; }
    [Required]
    public string Body { get; set; }
}

そしてリポジトリパターン:

public void Add<T>(T item) where T : class, new()
{
    _db.GetCollection<T>().Save(item);
}

public void Add<T>(IEnumerable<T> items) where T : class, new()
{
    foreach (T item in items)
    {
        Add(item);
    }
}

「Add」クラスを使用してネストされた配列にコメントを追加するにはどうすればよいですか?

4

1 に答える 1

0

このリポジトリ パターンを使用すると、次の 4 つの手順があります。

  1. タイプBlogModelのリポジトリをインスタンス化する
  2. コメントを追加するドキュメントを取得します
  3. ドキュメントにコメントを追加する
  4. ドキュメントをコレクションに保存します。

このようなもの:

var myRepository = new Repository<BlogModel>();
var myDocument = myRepository.Find(some_id);    // retrieve BlogModel document to update
myDocument.Comments.Add(some_new_comments);    // add to IList
myRepository.Add(myDocument);     // save changes to the document back to the repository

Add repository メソッドは C# Driver Saveメソッドを使用するため、実際にはinsert または updateの機能を持っていることに注意してください。この場合、CommentModelのリポジトリはありません。これは、 BlogModelドキュメントに埋め込まれたドキュメント配列として機能するためです。

于 2012-05-13T20:56:11.157 に答える