问题是在哪里以及如何将我的业务逻辑放在这个应用程序中。
想到了一些想法
选项1 - 制作ReceiptBo(收据业务对象) 继承Entity Receipt类和Icollection(ProductBo) ReceiptBo类负责添加Product,计算total和subtotal并调用Dal进行插入。 maby这个选项看起来有点矫枉过正。
选项2 - 使用部分类输出生成的Entity对象中的计算方法 并简单地使用BuisnessLayer来调用Dal。 这会使Buisnesslayer类在我看来过时,我不确定Entity类应该用于Business逻辑吗?
选项3 - 制作业务类但不要使用继承,只需将产品添加到实体并在那里进行计算并调用Dal进行插入。 这看似简单但不太优雅。
选项4 - 没有以上和我一无所知
现在我不使用WCF,但我的想法是,我想让这个应用程序松散耦合,以便实现它并进一步扩展它。
我对业务层的含义也有点困惑。在一些例子中,它更像是一个Dal也用于计算,然后其他人说这没有完成。
一些帮助会很棒。 THXps:抱歉我的英文不好
答案 0 :(得分:1)
真的,我会在这里简单一点,选择一个如下设计的通用多层架构:
我不会直接在实体中添加任何方法。所有方法都在业务层中定义,并由服务层公开。
答案 1 :(得分:1)
通常我将业务逻辑保留在ViewModels
,而不是我的Models
,并将EF对象视为Models
。最多,他们将进行一些基本的数据验证,例如验证长度或必填字段。
例如,EditRecieptViewModel
将验证业务规则,例如验证值是否在特定范围内,或验证用户是否有权编辑对象,或在值更改时执行某些自定义计算。
此外,请不要忘记ViewModels
应该反映视图,而不是Model
,因此不是每个Model
都会有ViewModel
自己的<{1}} >