ASP.NET MVC+WCF+NHibernate+Autofac 框架组合(1)

    //即使是用hibernate.cfg.xml的布局,则该行代码为 Configuration
config = new Configuration().Configure();
            config.AddAssembly(“Model”);//加载实体程序集。
            ISessionFactory sessionFactory =
config.BuildSessionFactory();
            ISession session= sessionFactory.OpenSession();
            ContainerBuilder builder = new ContainerBuilder();
    //以上是布局出NHibernate的基本类实例
           
builder.RegisterInstance(config).As<Configuration>().SingleInstance();
           
builder.RegisterInstance(sessionFactory).As<ISessionFactory>().SingleInstance();
            builder.Register(x =>
x.Resolve<ISessionFactory>().OpenSession()).As<ISession>().InstancePerLifetimeScope();
    //将NHibernate的为主类实例注入到容器

源代码:http://files.cnblogs.com/files/lm-nice/SpringNet\_NHibernate.7z

clientApp:控制台湾旅客户端

  配置文件 的转移操作改成“嵌入的财富”

一丢丢体会,NHibernate也是刚熟习,给像作者同样的新手参考,一起念书,有啥不够合理的地点还请多多指教。

 服务类里:UserBLL userBll =
ServiceLocator.Current.GetInstance<UserBLL>();获得工作层类的实例实行工作操作。

 protected void Application_Start(object sender, EventArgs e)
        {
            Configuration config = new Configuration();

 protected void Application_End(object sender, EventArgs e)
        {
            if (container != null)
            {
                container.Dispose();
                container = null;
            }
        }//程序退出释放能源

  Repository.xml
如若是用Spring.Net+NHibernate,那么个文件是必须的,里面配备NHibernate相关属性,及以Spring.NET注入的连锁属性。

clientApp +Manager+Repository+Model 是前面Spring.NET+NHibernate写的。

  UserBLL:构造函数参数为IRepository,也是为了用Autofac注入的。

Manager:业务层,Repository的现实业务类。

Repository:

  每种实体都对应二个.hbm.xml布局文件,NHibernate依据此文件音信与数据库进行映射,NHibernate区别版本配置会有分别。

Service:

上学了Spring.NET+NHibernate的框架,觉得Spring.NET框架不够轻量,配置来计划去的比较高烧,所以把Spring.NET换到了Autofac框架,同时出席WCF框架整了一个结缘。

IRepository是增加和删除改的接口类,

Global.asax里的代码如下,

迄今截止服务端的代码达成。只测试了User业务。客户端的MVC里后边再写上。编写翻译时只要发生未找到Oracle.DataAccess.dll,NHibernate错误,将dll文件放入bin文件。

Service:服务层,WCF服务应用程序

NHibernateRepository是选拔是NHibernate的数据库操作模板,模板类包装了对数据库的操作(Spring.NET的那套用的此类)。

BLL:

packages.config 是Autofac的安排文件

 

上边逐壹讲解:

 

BLL:业务层

Repository:持久层,抽象数据库操作,在那之中

   public static IContainer container = null;

末尾Spring.NET换来了Autofac后这一套程序或许编写翻译不通过了。

hibernate.cfg.xml 是NHibernate的数据库配置
,文件名是永恒的。数据库是oracle1壹g(该配置也可写在web.config文件里。笔者是用的web.config里的铺排).

UserManager.svc:

数据库为 Oracle1一G, NHibernate版本 三.二,.net 4.0

 

Model:实体

AutofacMvc+Service+BLL+Repository+Model是
MVC+WCF+Autofac+NHibernate写的壹套框架。

Repository,Model与地方是公家的

本来想把NHibernate换来EF的,因为以后平时用的.net 四.0,可是.net
四.0里的EF对Oracle帮忙没那么好,.net4.5有了oracle新的驱动就挺好用了。

Model:

  RepositotyBase是本套框架调用的数据库操作类,该类构造函数的参数是八个NHibernate的主导类,用来用Autofac进行实例化。

            builder.Register(c => new
RepositotyBase<User>(c.Resolve<Configuration>(),
c.Resolve<ISession>(),
c.Resolve<ISessionFactory>())).As<IRepository<User>>();
            builder.Register(c => new
UserBLL(c.Resolve<IRepository<User>>())).InstancePerDependency();
            container = builder.Build();
            //将业务层及数据层的操作类注入到容器
            var csl = new AutofacServiceLocator(container);
            ServiceLocator.SetLocatorProvider(() => csl);
        }

RepositotyBase是没利用模板,利用NHibernate的为主类对数据库进行操作。与NHibernateRepository性质壹样(Autofac的那套用的此类)。

源码中

相关文章