1

假设我有这3类下面:聚合根域逻辑

public class User 
{ 
    public int UserId { get; set; } 
    public ICollection<Location> { get; set; } 
} 
public class Location 
{ 
    public int LocationId { get; set; } 
    public int UserId { get; set; } 
    public ICollection<Sale> Sales { get; set; } 
} 
public class Sale 
{ 
    public int SaleId { get; set; } 
    public int LocationId { get; set; } 
    public decimal Cash { get; set; } 
} 

我有一个页面,我会显示总现金对谁在登录的用户的所有位置上的要求我想到我将GetTotalCash()方法放在Locations类中,并通过LINQ实现总结,但问题是我将通过User类访问Locations对象,我将无法调用由于Location属性是User类上的ICollection,因此使用summation方法。我应该把逻辑放在用户类上吗?但是这并不合理,因为它不是用户对象的行为,或者它不是?

顺便说一句,我使用的是EF 4.1代码第一次和MVC 3

感谢一大堆!

回答

0

实现位置类GetTotalCash()方法,并在用户类实现GetCashForLocation()以获得现金选择的位置(这将委托调用位置类GetTotalCash(),并在用户类将遍历实现GetTotalCash()他们的所有位置,并求和的现金。

那么reprehensibilites的每个信息专家级分配,并从聚合根委派

+0

“那么reprehensibilites的每个信息专家级分配,并从聚合根授权”。什么你是这个意思吗? – gnaungayan

+0

Als o,它似乎GetCashForLocation应该属于一个存储库? – gnaungayan

+0

信息专家是GRASP模式之一http://en.wikipedia.org/wiki/GRASP_(object-oriented_design) 这些模式描述您应该在哪里设计方法以及如何分配职责。 –