【发布时间】:2012-10-15 10:24:12
【问题描述】:
我想用IDal<T> 接口仅用CRUD operations 包装我的EntityFrameWork 类。
我想为每个实体创建对应的 BL 数据模型
意思是如果我有TempEntity 我将创建TempBlObj 和接口IDal<TempBlObj>
是否有完成此类任务的指导方针?
我在实现 Save(TempBlObj) 时遇到问题
实体中的保存是由:
mDbEntities.SaveChanges();
这取决于对实体引用所做的更改。
有什么解决办法吗?
更新
我这样做是为了模拟我的IDal<T> 界面
例如为了改变 TempEntity.status
我必须创建一个具体的方法 ChangeStatus() 而不是通用的 CRUD :Save(BlObj item)
与实体保存类似
..take reference to some entity, do some change.. 和
mMamDbEntities.SaveChanges();
我尝试添加 BlObjects 以放松 Bl 和具体 EntityFW 之间的依赖关系
更一般:
在使用 ORM 时,使用IDal<T> intreface(CRUD 操作)进行松散封装的最佳做法是什么?
【问题讨论】:
-
我认为您将与框架作斗争!我认为您必须专门分离所有其他实体才能实现这一目标。你真的需要它以这种方式工作吗?
-
用于单元测试。否则你会怎么做?
-
我无法准确地可视化您正在尝试做什么,更多上下文可能会有所帮助。
-
虽然我可以看到隔离代码以进行单元测试的优点,但考虑到 DAL(即 EntityFramework)是一个众所周知的数量,仅仅拥有它不是更实用吗?针对真实 DAL 运行的单元测试,并在您的测试设置中创建测试数据库实例等?
-
你会如何模拟 EntityFW ?
标签: c# .net entity-framework architecture