![]() |
1
3
我们在一个中型的内部项目中使用了ef。它是一个n层应用程序,服务器包含业务逻辑和自包含的ef层。客户端是一个wpf应用程序(通过wcf连接到服务器)。 ef有很多值得喜欢的地方,它可以使da层的某些方面很快编写,但我要说的是,它目前对断开连接的应用程序没有很好的支持。如果您的应用程序非常独立,与数据库有直接连接,并且始终使用1个数据上下文,那么它工作得非常好,数据上下文管理您的数据对象,从数据库中提取数据并适当地更新数据库。 一旦你试图用任何形式的n层结构来断开你的客户机,尽管事情变得越来越困难。您要么必须管理实体与数据上下文的断开连接和重新连接,要么必须以某种方式将数据上下文序列化到客户端。你必须使用多个数据上下文(部分原因是我们的服务器是无状态的,但也因为你会陷入一个巨大的混乱,试图使用一个单一的数据上下文多个客户端),这一切都变得有点棘手的管理。我们解决方案的一部分是拥有从较低级别的“ef数据对象”创建的单独“业务对象”。ef随后将管理这些数据对象(持久化它们并从数据库中加载它们等),但是我们自己的bll层将管理业务对象。保存和加载都需要从较高级别的对象转换到较低级别的对象,反之亦然。 总的来说,一切都很顺利,但事后看来,ef还没有完全做好企业级开发的准备。我听说.net 4.0中的下一个ef版本对断开连接和n层应用程序有更好的支持,但我个人并没有对此感到厌倦。 |
![]() |
Drago · Linq通过比较Id和具有Id的对象列表来查询获取列表 3 年前 |
![]() |
Niyazi Babayev · 如何在表达式中动态应用表达式? 3 年前 |
![]() |
Murat Güzel · EF存储库模式错误{'Id'}已被跟踪 3 年前 |
![]() |
dotnetdevcsharp · 减少基于数据类型获取设置的方法数量 3 年前 |
![]() |
saravanan049 · 在实体框架中回滚Azure SQL数据库 3 年前 |