小编Val*_*ann的帖子

在实体框架中添加 AsNoTracking 会影响计数吗?

将 AsNotracking 函数添加到实体框架 6 中的计数是否对计数有影响?更具体地说,它是提高还是降低性能,还是会缓存计数结果?

使用 AsNoTracking

myContext.Products.AsNoTracking().Count();
Run Code Online (Sandbox Code Playgroud)

没有 AsNoTracking

myContext.Products.Count();
Run Code Online (Sandbox Code Playgroud)

c# entity-framework-6

9
推荐指数
1
解决办法
444
查看次数

CQRS/DDD:检查引用完整性

命令处理程序是否还应该检查引用完整性?此常见问题解答建议您不要在聚合中检查此内容(http://cqrs.nu/Faq)。检查某些东西是否存在不是验证的一部分吗?

例如,您可以拥有一个可以向文章添加评论的应用程序。

该命令将包含以下字段:

  • ID
  • 文章编号
  • 用户身份
  • 文本

对于此示例,评论和文章是不同的聚合根。

如果文章已经存在且用户存在,您是否应该检查此示例?可以给不存在的文章添加评论,感觉有点奇怪。

referential-integrity domain-driven-design cqrs

5
推荐指数
1
解决办法
1098
查看次数

CQRS:如何实施投票机制(多对多关系)

我对CQRS和DDD比较陌生,我想知道在域模型中实现投票机制的最佳方法是什么.

在产品上,用户可以upvote/downvote.关于投票有一些域规则,你只能投票一次,无论是向下还是向上投票.

投票和产品都是聚合根.这是最好的方法吗?建议保持聚合较小.将投票添加到产品聚合根将超时使其变得臃肿.

我正在努力解决的问题是当投票是聚合根时删除投票.您需要知道需要删除哪个投票聚合.在命令处理程序中,无法使用productId和userId从存储库中检索投票.aggregateId作为单个Guid存储在数据库中.

该命令将包含这些字段

  • 用户身份
  • 产品编号

我找到的一些可能的解决方案:

  • 使用基于userId和productId的确定性GUID
  • 投票是产品的聚合列表
  • 创建一个voteId并使用它来删除投票.
  • 将聚合存储为字符串,并使用productId和userId的组合

什么是最好的方法?

domain-driven-design cqrs event-store

4
推荐指数
1
解决办法
189
查看次数

如何处理删除及其相关集合?

如果某个聚合被标记为已删除,您应该如何处理相关的聚合?

例如,假设您有一篇文章,该文章有评论,而那些评论有评论回复,而那些回复已被喜欢。

如果文章被删除

  • 是否应该为每个评论/回复/喜欢创建一个事件以通知它们已被删除?
  • 还是应该将文章标记为已删除,然后在命令处理程序中是否要创建/更新这些注释来检查该标记状态?

cqrs event-sourcing

4
推荐指数
1
解决办法
611
查看次数