4

オブジェクトが ravenDB にきれいに格納されていることは気に入っていますが、実際的な質問があり、それに対する最良の答えがわかりません。

見積もり依頼があるとしましょう:

QuoteRequest.cs

int Id;
dateTime DateCreated;
List<Quotes> Quotes;

Quote.cs

int ProviderId;
int Price;
int ServiceDays;
int ServiceTypeId;

誰かがページにアクセスすると、選択できる引用のリストを吐き出します。これらの見積もりは、見積もりリクエストのインスタンスにのみ関連しています。

私の質問は、リスト内の見積もりなどの子オブジェクトにはデータベースによって生成された ID がないため、クエリ文字列を生成して、ユーザーが購入したい見積もりを次のページに知らせるにはどうすればよいですか?

1 つの providerId によって複数の引用符が存在する可能性があります。

私の考えでは、QuoteId を追加し、this.Quotes.Count に基づいてインクリメントしますが、それは少しハッキーに見えるか、乱数を生成するか、これも少しハッキーです。

人々は一般的にこのようなことをどのように処理しますか?

4

3 に答える 3

2

購入 (ユーザーが購入することを選択したもの) を元の見積もりに関連付ける必要は本当にありますか? 私はあなたが見積もりを取ってから、それを購入に変換すると推測しています. その場合は、ID についてまったく心配する必要はありません。構成値を次のステップに渡すだけです。つまり、引用符を DDD の意味での値のように扱います。

ただし、購入への関連付けを保存する必要がある場合、何を追跡する必要があるかによって異なります。たとえば、QuoteRequest を更新して、選択した見積もりをマークすることができます。(IsSelected または見積もりクラス Quote に類似したものを追加します。) 次に、購入を見積もり要求にリンクし、フラグを使用して見積もりを識別できます。

繰り返しますが、これはすべてコンテキストに依存します (私はそれについて推測しているだけです)。

于 2011-03-18T02:31:35.490 に答える
1

まだ誰もこれに答えていないので、私ならどうするかだけ述べます。

なぜIDを追加するのですか? リストのインデックスを使用するだけですか?リクエストが「?quote=0」の場合、彼らは位置 0 で見積もりを取得しますか?

ここで何かが得られない場合はよくわかりません...

于 2011-02-09T16:23:53.377 に答える
0

1 つのオプションは、最後に使用された ID を親オブジェクトに格納することです。新しい子オブジェクトを追加するときは、id-counter をインクリメントし、それを子に追加します。オブジェクトが保存されると、id-counter は自動的にインクリメントされます。

コメント付きのブログ投稿があるとします。

public class Post
{
  public int NextCommentId;
  public List<Comment> Comments;
  ...
}

...

var comment = new Comment { Id = post.NextCommentId++ };
post.Comments.Add(comment);

session.SaveChanges();

上記のコードは 100% 正しいとは限りませんが、少なくともその方法については理解できるはずです!

于 2013-04-30T21:52:37.533 に答える