一:接口html
二:實現:工具
三:調用:ui
首先上圖:3d
一:接口代碼htm
public interface IPersonDa
{
PersonEntity Get(int id);
}blog
二:實現接口
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 並返回
}
}
}ip
數據訪問實體:get
public class Person
{
public int Id { get; set; }string
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