Autofac 一个使用Demo
一:接口
二:实现:
三:调用:
首先上图:
一:接口代码
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的更多相关文章
- LeadTools Android 入门教学——运行第一个Android Demo
LeadTools 有很多Windows平台下的Demo,非常全面,但是目前开发手机应用的趋势也越来越明显,LeadTools也给大家提供了10个Android的Demo,这篇文章将会教你如何运行第一 ...
- ArcGIS API for JavaScript开发环境搭建及第一个实例demo
原文:ArcGIS API for JavaScript开发环境搭建及第一个实例demo ESRI公司截止到目前已经发布了最新的ArcGIS Server for JavaScript API v3. ...
- 模仿京东顶部搜索条效果制作的一个小demo
最近模仿京东顶部搜索条效果制作的一个小demo,特贴到这里,今后如果有用到可以参考一下,代码如下 #define kScreenWidth [UIScreen mainScreen].bounds.s ...
- java线程间通信:一个小Demo完全搞懂
版权声明:本文出自汪磊的博客,转载请务必注明出处. Java线程系列文章只是自己知识的总结梳理,都是最基础的玩意,已经掌握熟练的可以绕过. 一.从一个小Demo说起 上篇我们聊到了Java多线程的同步 ...
- 一个数据源demo
前言 我们重复造轮子,不是为了证明我们比那些造轮子的人牛逼,而是明白那些造轮子的人有多牛逼. JDBC介绍 在JDBC中,我们可以通过DriverManager.getConnection()创建(而 ...
- 快速搭建一个直播Demo
缘由 最近帮朋友看一个直播网站的源码,发现这份直播源码借助 阿里云 .腾讯云这些大公司提供的SDK 可以非常方便的搭建一个直播网站.下面我们来给大家讲解下如何借助 腾讯云 我们搭建一个简易的 直播示例 ...
- 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 ...
- 这是关于FastJson的一个使用Demo,在Java环境下验证的
public class User { private int id; private String name; public int getId() { return id; } public vo ...
- Go学习【02】:理解Gin,搭一个web demo
Go Gin 框架 说Gin是一个框架,不如说Gin是一个类库或者工具库,其包含了可以组成框架的组件.这样会更好理解一点. 举个 下面的示例代码在这:github 利用Gin组成最基本的框架.说到框架 ...
随机推荐
- 原生JS 选项卡代码实现
可实现同页面多个选项卡 效果图: 代码实现: HTML部分 <div class="main" id="tabs"> <div class=& ...
- linux指令tips
1.调用命令使用应用名称免路径. 例如在路径 /usr/local/mobile/php538 建立了php应用,在调用php命令的时候,我们需要加路径访问 如 /usr/local/mobile ...
- 【行为型】State模式
状态模式其意图是在一个对象的状态发生变化时能够同时改变它的行为.一个生活中比较常见的例子就如你(是指你自己本人)在走时时,整个人全身的动作是双手臂前后慢慢摇摆且双脚也是一步一步慢慢往前移的,即:该走路 ...
- python之map和filter
li = [11,22,33,44,55,66] ret = filter(lambda a:a>33,li) print(list(ret)) ret2 = map(lambda a:a+10 ...
- Tr A
Problem Description A为一个方阵,则Tr A表示A的迹(就是主对角线上各项的和),现要求Tr(A^k)%9973. Input 数据的第一行是一个T,表示有T组数据. 每组数据的第 ...
- N个元素的集合划分成互斥的两个子集的数目
前面这是寒假听马士兵老师讲的时候积累的语录.......... 1.php是水果刀,java是菜刀,刀法比较多,一年的和三年的区别很大. 2.nanicat连接mysql出现10061是服务没开启,却 ...
- C++类型转换总结
C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是:TYPE b = (TYPE)a.C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用. const_cast, ...
- POJ3349 Snowflake Snow Snowflakes(哈希)
题目链接. 分析: 哈希竟然能这么用.检查两片雪花是否相同不难,但如果是直接暴力,定会超时.所以要求哈希值相同时再检查. AC代码: #include <iostream> #includ ...
- BZOJ1715: [Usaco2006 Dec]Wormholes 虫洞
1715: [Usaco2006 Dec]Wormholes 虫洞 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 475 Solved: 263[Sub ...
- Oracle function注释
create or replace function fn_bookid_get_by_chapterid(inintChapterId in integer, outvarBookId out va ...