RAVENDB ID用于儿童文件
-
12-10-2019 - |
题
我喜欢一个物体在Ravendb中存储的方式,但是有一个实用的问题,我不确定最佳答案。
可以说我有报价请求:
QuotereQuest.CS
int Id;
dateTime DateCreated;
List<Quotes> Quotes;
QUOTE.CS
int ProviderId;
int Price;
int ServiceDays;
int ServiceTypeId;
当有人登录页面时,我吐出了他们可以从中选择的引号清单。这些引号仅与报价请求的实例有关。
我的问题是,由于一个子对象(例如列表中的报价)没有数据库生成的ID,因此如何生成Querystring以让下一页知道用户要购买的报价?
一个ProviderId可能会有多个报价。
我的想法要么是添加了一个报价,并根据以下来递增。
人们通常如何处理这样的事情?
解决方案
您是否真的需要将购买(用户选择购买的东西)与原始报价相关联?我猜您拿来报价,然后将其转换为购买。如果是这样,那就不要担心ID。只需将组成值传递到下一步即可。换句话说,在DDD意义上将报价视为值。
但是,如果你 做 需要存储购买的关联...好吧,这取决于您的真实 需要 追踪。例如,您只需更新QuoryErequest,标记所选的报价即可。 (添加一个与报价类报价类似的问题或类似的内容。)然后,购买可以链接回报价请求,您可以通过标志来识别报价。
同样,所有这些都取决于上下文(我只是对此进行猜测)。
其他提示
由于没有人回答这个问题,但我会说我会怎么做。
为什么要添加ID?只使用列表的索引?请求是“?quote = 0”,他们在位置0处得到报价?
不确定我是否在这里没有得到东西...
一个选项是让父对象存储最后使用的ID。添加新的子对象时,您会增加身份点并将其添加到孩子中。保存对象时,ID-CONTER会自动增加。
可以说,您的博客文章带有评论:
public class Post
{
public int NextCommentId;
public List<Comment> Comments;
...
}
...
var comment = new Comment { Id = post.NextCommentId++ };
post.Comments.Add(comment);
session.SaveChanges();
上面的代码可能不是100%正确的,但应该让您了解如何做!
不隶属于 StackOverflow