EF一个cqrs:编辑和实体,同时保持层和查询和命令的分离

时间:2017-06-23 15:18:17

标签: c# asp.net-mvc entity-framework design-patterns cqrs

我正在将crud nTier web应用程序(MVC)更改为cqrs实现(这是我第一次这样做),现在我正在分割什么是业务层。我在重写一些编辑实体的命令时遇到了麻烦,这是因为我必须运行一个查询才能按顺序编辑实体。我认为正确的做法是让控制器运行查询,然后将实体向下传递,但这似乎会破坏层之间的分离,因为这意味着表示层将知道数据访问。我在这里做什么,在EF中有一种方法可以使用用于创建实体的新版本模型来编辑实体。如果不可能,我怎么能在不打破关注点或cqrs分离的情况下这样做。

我考虑的一些选项是

  • 将我的模型拉出到公共图书馆

  • 在命令堆栈中执行查询但仍未返回任何内容

1 个答案:

答案 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注入命令执行者。