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的实例化,以后会解决这个问题)
  • 相关阅读:
    Atitit 人脸识别 眼睛形态 attilax总结
    Atitit 手机号码选号 规范 流程 attilax总结 v2 r99.docx
    atitit 板块分类 上市公司 龙头企业公司 列表 attilax总结.docx
    Atititi atiitt eam pam资产管理 购物表去年.xlsx
    使用cmd查看电脑连接过的wifi密码(一)
    常见十大web攻击手段 悟寰轩
    常见web攻击方式 悟寰轩
    【MYSQL数据库】MYSQL学习笔记mysql分区基本操作 悟寰轩
    Filter及FilterChain的使用详解 悟寰轩
    启动tomcat spring初始化两次问题(eg:@PostConstruct) 悟寰轩
  • 原文地址:https://www.cnblogs.com/csj007523/p/3556257.html
Copyright © 2011-2022 走看看