一:接口

二:实现:

三:调用:

首先上图:

一:接口代码

public interface IPersonDa
{
  PersonEntity Get(int id);
}

二:实现

public class PersonDa : IPersonDa
{
  public PersonEntity Get(int id)
  {
    using (BaseMgr.BaseSysDbContext db = new BaseSysDbContext()) {
    var result = db.People.Where(p => p.Id == id).FirstOrDefault();
    return new PersonEntity();//返回 Person 成 PersonEntity 并返回
    }
  }
}

数据访问实体:

public class Person
{
  public int Id { get; set; }

  public string Name { get; set; }
}

传输(其他)实体:

public class PersonEntity
{
  public int Id { get; set; }

  public string Name { get; set; }
}

三:调用

static void Main(string[] args)
{
  ContainerBuilder builder = new ContainerBuilder();

  var basePath = AppDomain.CurrentDomain.BaseDirectory;
  var dataAccess = Assembly.LoadFrom("ChesFrame.DataAccess.dll");
  var dataAccess2 = Assembly.LoadFrom("ChesFrame.IDataAccess.dll");

  builder.RegisterAssemblyTypes(dataAccess2,dataAccess ).Where(t => t.Name.EndsWith("Da")).AsImplementedInterfaces();

  var container = builder.Build();
  foreach (var sub in container.ComponentRegistry.Registrations)
  {
    Console.WriteLine("Target-------" +sub.Target.ToString());
    Console.WriteLine("Services-----" + sub.Services.ToString());
    foreach (var m in sub.Services)
    {
      Console.WriteLine("Service------" + m.ToString());
    }
    Console.WriteLine("-------------------------------------");

  }
var person = container.Resolve<IPersonDa>();
}

运行结果:

另外说一点关于项目中使用EF:

  项目中EF只是当成了一个数据访问工具,它使用的实体为数据访问实体,数据访问实体只能出现在数据访问层中,

  看一下数据访问层的结构

  

Person、Blog、Post 都只能在 DataAccess中,之外不能访问到;

代码

在项目中,这里的调用 可能需要单独抽取出来,做成Utility,可以 结合配置文件,从配置文件中提取DLL,加载入CurrentDomain中

Autofac入门指南:http://autofac.readthedocs.org/en/latest/getting-started/index.html

Autofac 一个使用Demo的更多相关文章

  1. LeadTools Android 入门教学——运行第一个Android Demo

    LeadTools 有很多Windows平台下的Demo,非常全面,但是目前开发手机应用的趋势也越来越明显,LeadTools也给大家提供了10个Android的Demo,这篇文章将会教你如何运行第一 ...

  2. ArcGIS API for JavaScript开发环境搭建及第一个实例demo

    原文:ArcGIS API for JavaScript开发环境搭建及第一个实例demo ESRI公司截止到目前已经发布了最新的ArcGIS Server for JavaScript API v3. ...

  3. 模仿京东顶部搜索条效果制作的一个小demo

    最近模仿京东顶部搜索条效果制作的一个小demo,特贴到这里,今后如果有用到可以参考一下,代码如下 #define kScreenWidth [UIScreen mainScreen].bounds.s ...

  4. java线程间通信:一个小Demo完全搞懂

    版权声明:本文出自汪磊的博客,转载请务必注明出处. Java线程系列文章只是自己知识的总结梳理,都是最基础的玩意,已经掌握熟练的可以绕过. 一.从一个小Demo说起 上篇我们聊到了Java多线程的同步 ...

  5. 一个数据源demo

    前言 我们重复造轮子,不是为了证明我们比那些造轮子的人牛逼,而是明白那些造轮子的人有多牛逼. JDBC介绍 在JDBC中,我们可以通过DriverManager.getConnection()创建(而 ...

  6. 快速搭建一个直播Demo

    缘由 最近帮朋友看一个直播网站的源码,发现这份直播源码借助 阿里云 .腾讯云这些大公司提供的SDK 可以非常方便的搭建一个直播网站.下面我们来给大家讲解下如何借助 腾讯云 我们搭建一个简易的 直播示例 ...

  7. Visual Studio 2017 - Windows应用程序打包成exe文件(2)- Advanced Installer 关于Newtonsoft.Json,LINQ to JSON的一个小demo mysql循环插入数据、生成随机数及CONCAT函数 .NET记录-获取外网IP以及判断该IP是属于网通还是电信 Guid的生成和数据修整(去除空格和小写字符)

    Visual Studio 2017 - Windows应用程序打包成exe文件(2)- Advanced Installer   Advanced Installer :Free for 30 da ...

  8. 这是关于FastJson的一个使用Demo,在Java环境下验证的

    public class User { private int id; private String name; public int getId() { return id; } public vo ...

  9. Go学习【02】:理解Gin,搭一个web demo

    Go Gin 框架 说Gin是一个框架,不如说Gin是一个类库或者工具库,其包含了可以组成框架的组件.这样会更好理解一点. 举个 下面的示例代码在这:github 利用Gin组成最基本的框架.说到框架 ...

随机推荐

  1. C# 代码 设置 前台 页面 JS提示

    方法1: Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert ...

  2. 利用花生壳在自己电脑上建立外网可访问的svn

    下载花生壳并注册账号 2.花生壳会送你一个免费的二级域名 3.登陆到路由器界面192.168.0.1或者192.168.0.0进入动态dns选项输入你的花生壳账号密码 4.在路由器设置界面设置转发规则 ...

  3. Chapter 2. OpenSSL的安装和配置学习笔记

    Chapter 2. OpenSSL的安装和配置学习笔记 2.1 在linux上面安装OpenSSL我还是做点No paper事情比较在行,正好和老师的课程接轨一下.以前尝试过在Windows上面安装 ...

  4. IOS笔记 1

    < ![CDATA[ 笔记 UIWindows 与UIView的关系iOS的坐标系统视图层次结构视图坐标(Frame和Bounds区别)UIView的常用属性和方法坐标系统的变换UIView内容 ...

  5. zoj 3785 What day is that day?

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5272 打表找规律. #include <cstdio> #incl ...

  6. listView中setOnItemClickListener和getSelectedItemPosition()取不到position问题

    //也可以采用通过listview 索引 取得 item 可以转化到 cursor ,pos 是在listview 的选中事件中赋值. //Cursor v2 = (Cursor) listView. ...

  7. POJ2251 Dungeon Master(bfs)

    题目链接. 题目大意: 三维迷宫,搜索从s到e的最小步骤数. 分析: #include <iostream> #include <cstdio> #include <cs ...

  8. SQL SELECT INTO 语句

    SQL SELECT INTO 语句可用于创建表的备份复件. SELECT INTO 语句 SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中. SELECT INTO 语句常用 ...

  9. 《Ruby语言入门教程v1.0》学习笔记-03

    10.09 第七章 7.1 模块 Ruby标准包里的 Math 模块提供了许多方法,比如:求平方根 sqrt ,使用的时候要这么写:模块名.方法名(参数).如:Math.sqrt( a*5+b ) M ...

  10. 关于WebView的内存泄露 Leaked webview

    [leaded webview  和WebView内存泄露问题解决方法] 解决方法1: 解决方法2 . 在Fragment回收Webview的时候注意一下. 就是讲他父控件里的内容清空: 参考:htt ...