zoukankan      html  css  js  c++  java
  • .net EntityFramework用法探索系列 1

    EntityFramework用法探索系列

    • (一)DatabaseFirst
    • (二)CodeFirst
    • (三)CodeFirst流畅API
    • (四)Repository和UnitOfWork
    • (五)引入Unity
    • (六)静态Repository
    • (七)线程安全实践
    • (八)事务处理
    • AutoFac和NHibernate

          通过NuGet安装Autofac.WebApi。(当然要先安装Autofac.dll)。PM > Install-Package Autofac.WebApi

        在Application_Start里调用Bootstrapper.Run()。

    1. protectedvoid Application_Start() 
    2.     AreaRegistration.RegisterAllAreas(); 
    3.     RegisterGlobalFilters(GlobalFilters.Filters); 
    4.     RegisterRoutes(RouteTable.Routes); 
    5. BundleTable.Bundles.RegisterTemplateBundles();
    6.     //Call Autofac DI configurations    
    7.     Bootstrapper.Run(); 

     

    UnitOfWork的主要用途:

    (1)管理事务 。

    (2)实现数据的插入,删除和更新。

    (3)防止重复更新。通过对保持对象的跟踪,防止多次提交数据库操作,提高性能。

    Repository

    Mediates between the domain and data mapping layers using a collection-like interface for accessing domain objects                                                                                                                                                                 

    Repository模式主要用于实现业务层和数据访问层的隔离。这样做的好处是客户端代码(此处指业务层的service代码)不依赖于具体数据存储的实现。并且Repository只需要暴露必须的数据访问给Service层。

    下面我们来看利用这两个模式针对我们的需求做的一个简单的实现(使用Entity Framework中ObjectContext 来实现简单的UnitOfWork的功能)

    这些类之间的关系比较简单,

    1. OrderService创建一个新的OrderEntities实例来模拟和启动UnitOfWork
    2. UnitOfWork实例要传递给2个repository (CustomerRepository和OrderRepository)
    3. OrderService的实现依赖于两个repository的公开方法.
    4. UnitOfWork模式是通过EF中的object context来实现的
    5. Repository的功能封装了EF中的object context的基本CRUD操作
    6. 整个设计利用了代理设计模式(proxy design pattern)
    7. OrderService不存在也不应该对objectConext的直接引用和调用,在上图中我们也可以看到这点(在代码中我们的确做了一个Object Context的实例化,以后会解决这个问题)
  • 相关阅读:
    Java网络编程注意事项3
    存储在图的形式——邻接矩阵(排列)
    C++ Primer 学习笔记_35_STL实践与分析(9)--map种类(在)
    [Django1.6]south于django1.6使用
    《Javascript权威指南》13号学习笔记:使用日期和时间
    POJ 1699 Best Sequence (DFS+预处理)
    第五蓝桥杯 蚂蚁冷
    Mac OS X 在捕捉AppLAN通信包
    面向对象、内存模型、动态绑定
    链接器与分离编译
  • 原文地址:https://www.cnblogs.com/csj007523/p/3556257.html
Copyright © 2011-2022 走看看