NHibernateUtil- Dao- Test

//============================================================
// Auto generated by CodeSmith, at:  2012/9/5 21:57:44
//============================================================

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NHibernate;
using NHibernate.Cfg;
using log4net;
using NHibernate.Context;

namespace BMW.Core.Dao {
    public class NHibernateUtil {
        /// <summary>
        /// 全局唯一的SessionFactory
        /// </summary>
        public static readonly ISessionFactory SessionFactory;
       

        //静态块,初始化读取 Hibernate 配置
        static NHibernateUtil() {
            try {
                Configuration cfg = new Configuration();
                SessionFactory = cfg.Configure().BuildSessionFactory();
            }
            catch (Exception ex) {
                ILog logger = LogManager.GetLogger("NHibernateHelper Logger");
                if (logger.IsErrorEnabled)
                    logger.Error("NHibernate initialization failed.Exception:{0}",ex);
                throw;
            }
        }

        /// <summary>
        /// 绑定Session上下文管理,与current_session_context_class配置节相关,应在请求开始时执行
        /// </summary>
        public static void BindSession() {
            ISession session = SessionFactory.OpenSession(); ;
            CurrentSessionContext.Bind(session);
        }

        /// <summary>
        /// 解除Session上下文管理绑定,释放Session对象。与current_session_context_class配置节相关,应在请求结束时执行。
        /// </summary>
        public static void UnbindSession() {
            ISession session = CurrentSessionContext.Unbind(NHibernateUtil.SessionFactory);
            session.Dispose();
        }

        /// <summary>
        /// 获取当前上下文的Session
        /// </summary>
        public static ISession CurrentSession {
            get {
                return SessionFactory.GetCurrentSession();
            }
        }

        /// <summary>
        /// 在当前会话中开始事务Hibernate并返回事务对象,应用using释放
        /// </summary>
        public static ITransaction BeginTransaction() {
            return CurrentSession.BeginTransaction();
        }
    }
}

 

 

 

//============================================================
// Auto generated by CodeSmith, at:  2012/9/5 21:57:44
//============================================================

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NHibernate;
using NHibernate.Cfg;
using System.Web;
using NHibernate.Context;
using log4net;

namespace BMW.Core.Dao {
    public class NHibernateDao<T, TKey> {

        public ISession Session {
            get {
                return NHibernateUtil.CurrentSession;
            }
        }

        public T Insert(T entity) {
            Session.Save(entity);
            return entity;
        }

        public T Update(T entity) {
            Session.Merge(entity);
            return entity;
        }

        public void Delete(T entity) {
            Session.Delete(entity);
        }

        public T FetchByKey(TKey key) {
            return Session.Get<T>(key);
        }

        public IList<T> GetAll() {
            return Session.CreateCriteria(typeof(T)).List<T>();
        }
    }
}


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NUnit.Framework;
using BMW.Core.Dao;
using System.Transactions;

namespace BMW.Core.Test {

    [TestFixture]
    public class TestBase {
        [TestFixtureSetUp]
        public void TestFixtureSetUp() {
            NHibernateUtil.BindSession();
        }

        [TestFixtureTearDown]
        public void TestFixtureTearDown() {
            NHibernateUtil.UnbindSession();
        }

        //TransactionScope tx = null;

        //[SetUp]
        //public void SetUp() {
        //    tx = new TransactionScope();
        //}

        //[TearDown]
        //public void TearDown() {
        //    tx.Dispose();
        //}
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NUnit.Framework;
using BMW.Core.Biz;
using BMW.Core.Model;

namespace BMW.Core.Test
{
    [TestFixture]
    public class PositionBizTest:TestBase
    {
        private PositionBiz target = new PositionBiz();

        [TestCase]
        public void GetAllTest() {
            Assert.AreEqual(5, target.GetAll().Count);
        }

        [TestCase]
        public void FetchPositionByNameTest()
        {
            Assert.AreEqual(1, target.FetchPositionsByName("员工").Id);
        }

        [TestCase]
        public void FetchByKeyTest() {
            Assert.IsNotNull(target.FetchByKey(2));
        }

        [TestCase]
        public void AddTest() {
            Position p = new Position { Name = "员工" };
            //输入重复职位名字,应抛出异常
            Assert.Throws<BusinessException>(() => target.Add(p));
            //不存在则添加
            p = new Position { Name = "所长" };
            target.Add(p);
            Assert.AreEqual(6,target.GetAll().Count);
        }

        //产看当前职位ID是被外键使用,true为使用中,false未使用
        [TestCase]
        public void CheckPositionIsReferencedTest() {
            Assert.IsTrue(target.CheckPositionIsReferenced(1));
            Assert.IsFalse(target.CheckPositionIsReferenced(2));
        }

        [TestCase]
        public void UpdateTest() {
            //修改职位名称,如果修改的名称在表里面已经存在,则抛出异常
            Position p = target.FetchByKey(4);
            p.Name = "经理";
            Assert.Throws<BusinessException>(() => target.Update(p));
            //如果是唯一,则成功
            p.Name = "班长";
            target.Update(p);
            Assert.AreEqual("班长", target.FetchByKey(4).Name);
        }

        [TestCase]
        public void CheckPositionIsUsedTest() {
            //如果职位被应用,返回true
            Position p = new Position { Id = 1 };
            Assert.IsTrue(target.CheckPositionIsUsed(p.Id));
            p.Id = 2;
            Assert.IsFalse(target.CheckPositionIsUsed(p.Id));
        }

        [TestCase]
        public void DeleteByIdTest() {
            //如果职位在员工表中有应用则抛出异常
            Position p = target.FetchByKey(1);
            Assert.Throws<BusinessException>(() => target.DeleteById(p.Id));
            //删除成功之后,数据不存在返回null
            target.DeleteById(3);
            Assert.IsNull(target.FetchByKey(3));
        }
    }
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
城市应急指挥系统是智慧城市建设的重要组成部分,旨在提高城市对突发事件的预防和处置能力。系统背景源于自然灾害和事故灾难频发,如汶川地震和日本大地震等,这些事件造成了巨大的人员伤亡和财产损失。随着城市化进程的加快,应急信息化建设面临信息资源分散、管理标准不统一等问题,需要通过统筹管理和技术创新来解决。 系统的设计思路是通过先进的技术手段,如物联网、射频识别、卫星定位等,构建一个具有强大信息感知和通信能力的网络和平台。这将促进不同部门和层次之间的信息共享、交流和整合,提高城市资源的利用效率,满足城市对各种信息的获取和使用需求。在“十二五”期间,应急信息化工作将依托这些技术,实现动态监控、风险管理、预警以及统一指挥调度。 应急指挥系统的建设目标是实现快速有效的应对各种突发事件,保障人民生命财产安全,减少社会危害和经济损失。系统将包括预测预警、模拟演练、辅助决策、态势分析等功能,以及应急值守、预案管理、GIS应用等基本应用。此外,还包括支撑平台的建设,如接警中心、视频会议、统一通信等基础设施。 系统的实施将涉及到应急网络建设、应急指挥、视频监控、卫星通信等多个方面。通过高度集成的系统,建立统一的信息接收和处理平台,实现多渠道接入和融合指挥调度。此外,还包括应急指挥中心基础平台建设、固定和移动应急指挥通信系统建设,以及应急队伍建设,确保能够迅速响应并有效处置各类突发事件。 项目的意义在于,它不仅是提升灾害监测预报水平和预警能力的重要科技支撑,也是实现预防和减轻重大灾害和事故损失的关键。通过实施城市应急指挥系统,可以加强社会管理和公共服务,构建和谐社会,为打造平安城市提供坚实的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值