我正在努力锻炼坚持我的域更改的最佳位置。我有以下实体:DDD Enity持久性场景
public class Period
{
public Guid PeriodId { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
}
Trade
{
public Guid TradeId { get; set; }
Trader Instigator { get; set; }
Trader Acceptor { get; set; }
Period period { get; set; }
public long Volume { get; set; }
public decimal Price { get; set; }
}
现在创建一个新的贸易,我卸载这一个域名服务
tradeService.PlaceTrade(Guid periodId, Guid UserId, decimal price. long volume)
的地方贸易功能似乎很好地适应上述领域的服务,贸易服务坚持交易。我传递一个ITradeRepository类来方便。
要接受交易,我希望具有以下内容,以便交易的域逻辑位于交易实体内。
Trade trade = tradeRepository.Get(Guid tradeId)
TradeStatus = trade.Accept(userId);
上面的问题是Trade实体负责持久化数据,因此对ITradeRepository具有依赖性。
这是这样做的正确方法吗?感觉很脏?或者,更好的办法是为交易类创建一个扩展方法,以便为接受交易提供相同的功能?
有什么想法? 谢谢
谢谢你,这是有道理的。我感到困惑。我设想ddd域名服务就像创建api一样,这样您就可以对域对象方法进行单个调用来执行交互。有点像asp.net成员资格类为用户对象user.changepassword工作。我现在已经意识到,该功能应该在ddd的应用程序层。 – Mantisimo