我正在将crud nTier web应用程序(MVC)更改为cqrs实现(这是我第一次这样做),现在我正在分割什么是业务层。我在重写一些编辑实体的命令时遇到了麻烦,这是因为我必须运行一个查询才能按顺序编辑实体。我认为正确的做法是让控制器运行查询,然后将实体向下传递,但这似乎会破坏层之间的分离,因为这意味着表示层将知道数据访问。我在这里做什么,在EF中有一种方法可以使用用于创建实体的新版本模型来编辑实体。如果不可能,我怎么能在不打破关注点或cqrs分离的情况下这样做。
我考虑的一些选项是
将我的模型拉出到公共图书馆
在命令堆栈中执行查询但仍未返回任何内容
答案 0 :(得分:1)
您无需查询对象即可更新表中的记录。 Insted查询,您可以附加“假”实体,编辑它并保存更改。
var book = new book()
{
Id = 20
};
using (var context = new DatabaseContext())
{
context.Books.Attach(book);
book.Title = "Updated Title";
context.SaveChanges();
}
这样你就不会破坏图层。您可以使用DI将DatabaseConext注入命令执行者。