在保存实体之前和之后处理业务逻辑

时间:2014-10-30 15:58:15

标签: entity-framework

所以在EF之前,我在Order

的Save()方法中做了类似的事情
public void Save(){
    //validate
    if (this.OrderItems.Count == 0)
        throw new Exception ("You need at least one order item");

    //so the user code does not have to do this
    this.DateTimeModified = DateTime.Now;

    saveToDataBase();

    //after saving to the DB, the order amount is greater than $3000, notify certain people
    if (OrderAmount >= 3000)
        notifyPersonell();
}

正如您在上面所看到的,所有内容都很好地封装在Order.Save()中。

这样做最优雅的方式是什么?有人建议在保存在ValidateOrder()之前放入所有内容,然后在AfterOrderSaved()之后放入。这太荒谬了。因此,用户代码必须记住这样做。

order.ValidateOrder();
context.SaveChanges();
order.AfterOrderChanged();

面对封装,它完全过得很快。如果用户代码忘记调用ValidateOrder和AfterOrderChanged?

,该怎么办?

提前非常感谢你。

0 个答案:

没有答案