我有以下n层设计。
按照可以看到的内容的降序排列:
视图> 视图模型> 业务逻辑层> 数据访问层(存储库)
目前,视图模型使用业务对象执行某些高级操作(向数据库添加内容),BLL使用DAL执行低级操作。 DAL只有简单的原子操作(CRUD操作),而BLL使用工作单元模式来完成更高级别的业务操作,可能需要访问不同的存储库等。因此,执行这些操作的业务逻辑存在于BLL中
我的问题是,现在我正在思考我的模型会是什么问题。由于我使用的是实体框架,我的商业模式基本上都是我的EF实体。每个人都告诉我,业务逻辑应该放在模型中。如果这是真的,那么如果每个模型包含单独的业务逻辑,那么业务逻辑层的重点是什么?我觉得我有两个领域,我有“业务逻辑”。
我如何向我的EF实体添加业务逻辑,因为我没有使用代码优先,当我更改我的.edmx时,实体会重新创建。
谢谢。
答案 0 :(得分:1)
要回答第二个问题,EF类被标记为“部分”,这意味着您可以创建一个新文件(在同一个程序集中),将另一个“部分”类与其中生成的类同名,并且编译器的行为就好像新文件中的代码存在于生成的代码中一样。
第一个问题更复杂,我会把业务逻辑放在最有意义的地方。如果它属于特定实体,请将其作为上述部分类的一部分。如果它必须与多个实体交互,处理其他来源等,它应该可以进入自己的类。复制代码几乎不是正确的答案。
请注意,在我看来,“Model”是MVVM中的底层业务逻辑和数据。它并不一定意味着它只是在数据对象中,或者在一个对象中。它只是与View和ViewModel对象分开。