Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 实体框架和业务层/逻辑_Entity Framework_Mvvm - Fatal编程技术网

Entity framework 实体框架和业务层/逻辑

Entity framework 实体框架和业务层/逻辑,entity-framework,mvvm,Entity Framework,Mvvm,我正在对MVVM light-EF应用程序的体系结构进行一些自我研究 我正在尝试构建一个类似于产品/收据的应用程序。 我有一个Db/EF,其中包含一个多对多关系中的产品和收据表/实体。 然后我有一个DAL wich简单地使用Linq做简单的CRUD 问题是在哪里以及如何将我的业务逻辑放到这个应用程序中 我想到了几个主意 选项1 -制作收款BO(收款业务对象) 它继承实体收据类和Icollection(ProductBo) ReceiptBo类将负责添加产品、计算总计和小计,并调用Dal进行插入。

我正在对MVVM light-EF应用程序的体系结构进行一些自我研究 我正在尝试构建一个类似于产品/收据的应用程序。 我有一个Db/EF,其中包含一个多对多关系中的产品和收据表/实体。 然后我有一个DAL wich简单地使用Linq做简单的CRUD

问题是在哪里以及如何将我的业务逻辑放到这个应用程序中

我想到了几个主意

选项1 -制作收款BO(收款业务对象) 它继承实体收据类和Icollection(ProductBo) ReceiptBo类将负责添加产品、计算总计和小计,并调用Dal进行插入。 也许这个选择有点过分了

选项2 -使用分部类将计算方法放入生成的实体对象中 只需使用BuisnessLayer调用Dal。 在我看来,这将使Buisnesslayer类过时,我不确定实体类是否应该用于业务逻辑

选项3 -创建业务类,但不要麻烦使用继承,只需将产品添加到实体中,并在实体中进行计算,然后调用Dal进行插入。 威奇看起来很简单,但不是很优雅

选项4 -以上这些我都不知道

现在我不使用WCF,但我的想法是,我想让这个应用程序松散耦合,这样它将很容易实现,并进一步扩展它

我也有点困惑什么是业务层。在一些例子中,它更像是一个Dal,也进行计算,然后其他人说这是没有做到

帮点忙就好了。thx


ps:很抱歉我的英语不好

真的,我会在这里简单介绍一下,然后选择一个通用的多层体系结构,设计如下:

  • 数据访问层(基本上是实体框架模型和所有实体)
  • 一个业务层,公开访问实体的方法(CRUD方法+任何运行某些逻辑的自定义方法)
  • 通过WCF(服务+数据契约)公开无状态方法的服务层
  • 表示层(在使用MVVM模式的情况下)
    • 视图(XAML页面)
    • 视图模型(C类)
    • 模型在这里由服务层通过WCF公开的实体表示

我不会直接在实体中添加任何方法。所有方法都在业务层中定义,并由服务层公开。

通常我将业务逻辑保存在我的
视图模型中,而不是我的
模型中,并且我将EF对象视为
模型。最多,他们会有一些基本的数据验证,比如验证长度或必填字段

例如,
editReceiptViewModel
将验证业务规则,例如验证值是否在特定范围内,或者验证用户是否有权编辑对象,或者在值更改时执行一些自定义计算

另外,不要忘记
ViewModels
应该反映视图,而不是
Model
,因此不是每个
Model
都有自己的
ViewModel