c#中odp.net 4.0利用odac操作oracle数据库学习(五)

本文是关于C#中使用ODP.NET 4.0的ODAC组件进行Oracle数据库操作的学习第五部分,主要介绍如何进行单元测试,包括对RawImageMetaData的查询、添加、删除、修改的单项和批量操作,实现对tm_raw_image_metadata_infos表的完整操作。
摘要由CSDN通过智能技术生成

c#中odp.net 4.0利用odac操作oracle数据库学习(五)

简介:上篇文章中我们讲述了对RawImageMetaData业务操作类的封装就完成了,

         接下来我们需要调用,进行单元测试,

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

UnitRawImageMetaDataInfo单元测试类:

对RawImageMetaData底层操作类的单项查询,单项的添加,删除,修改以及批量的添加,删除,修改进行单元测试

/********************************************************
    *文件所属:北京******公司
    *文件名称:原始影像数据的元数据信息管理模块单元测试
    *文件描述:对原始影像数据的元数据信息管理模块所有操作的业务逻辑后代代码的单元测试
    *  创建人:PengZhen
    *创建时间:2013-11-26 10:58:19
 ********************************************************/
using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.IO;
using System.Drawing;
using BDSS.BLL;
using BDSS.Model.DAL.Model;
using System.Reflection;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
using System.Data;

namespace BDSS.UnitTest
{
    /// <summary>
    /// UnitRawImageMetaDataInfo 的摘要说明
    /// </summary>
    [TestClass]
    public class UnitRawImageMetaDataInfo
    {
        public UnitRawImageMetaDataInfo()
        {
            //
            //TODO: 在此处添加构造函数逻辑
            //
        }

        private TestContext testContextInstance;

        /// <summary>
        ///获取或设置测试上下文,该上下文提供
        ///有关当前测试运行及其功能的信息。
        ///</summary>
        public TestContext TestContext
        {
            get
            {
                return testContextInstance;
            }
            set
            {
                testContextInstance = value;
            }
        }

        #region 附加测试特性
        //
        // 编写测试时,可以使用以下附加特性:
        //
        // 在运行类中的第一个测试之前使用 ClassInitialize 运行代码
        // [ClassInitialize()]
        // public static void MyClassInitialize(TestContext testContext) { }
        //
        // 在类中的所有测试都已运行之后使用 ClassCleanup 运行代码
        // [ClassCleanup()]
        // public static void MyClassCleanup() { }
        //
        // 在运行每个测试之前,使用 TestInitialize 来运行代码
        // [TestInitialize()]
        // public void MyTestInitialize() { }
        //
        // 在每个测试运行完之后,使用 TestCleanup 来运行代码
        // [TestCleanup()]
        // public void MyTestCleanup() { }
        //
        #endregion

        /// <summary>
        /// 根据数据编号获取原始影像数据的元数据信息实体信息 
        /// </summary>
        /// <author>PengZhen</author>
        /// <time>2013-11-26 14:16:51</time>
        [TestMethod]
        public void GetModel()
        {
            RawImageMetaData objRIMD = new RawImageMetaData();
            RawImageMetaDataInfo objRIMDI = objRIMD.GetModel("4d456b58-9b16-40b6-99cb-5ffd8f5a5187");
        }

 
        /// <summary>
        /// 增加一条数据
        /// </summary>
        /// <author>PengZhen</author>
        /// <time>2013-11-26 10:57:27</time>
        [TestMethod]
        public void Insert()
        {
            RawImageMetaData objRIMD = new RawImageMetaData();
            RawImageMetaDataInfo objRIMDI = new RawImageMetaDataInfo();

            Type t = objRIMDI.GetType();

            string strID = string.Empty;

            foreach (PropertyInfo pi in t.GetProperties())
            {
                string name = pi.Name;
                //object value1 = pi.GetValue(objRIMDI, null);

                //xmltype数据
                if (name.Equals("PRODUCT_USE"))
                {
                    string str = "<name><a id=\"1\" value=\"some values\">test</a></name>";
                    pi.SetValue(objRIMDI, str, null);
                }
                //ST_GEOMETRY(空间数据)
                else if (name.Equals("ENVELOPE"))
                {
                    string str = "POINT  ( 1.00000000 1.00000000)";
                    pi.SetValue(objRIMDI, str, null);
                }
                //编号
                else if (name.Equals("ID"))
                {
                    string str = Common.Helper.SysHelper.NewGUID;
                    pi.SetValue(objRIMDI, str, null);
                }
                //状态
                else if (name.Equals("STATUS"))
                {
                    pi.SetValue(objRIMDI, "0", null);
                }
                //Timestamp(时间隔)
                else if (pi.PropertyType == typeof(DateTime))
                {
                    pi.SetValue(objRIMDI, DateTime.Now, null);
                }
                //Blob(影像数据)
                else if (pi.PropertyType == typeof(byte[]))
                {
                    string pPath = @"C:\Users\Public\Pictures\Sample Pictures\Chrysanthemum.jpg";
                    FileInfo fi = new FileInfo(pPath);
                    byte[] Byte = imageToByteArray(pPath);
                    pi.SetValue(objRIMDI, Byte, null);
                }
                //字符串
                else if (pi.PropertyType == typeof(string))
                {
                    pi.SetValue(objRIMDI, "1", null);
                }
                //NUMBER所有类型
                else if (pi.PropertyType == typeof(decimal))
                {
                    pi.SetValue(objRIMDI, 1.23m, null);
                }
            }

            Assert.IsTrue(objRIMD.Insert(objRIMDI), "添加失败!");
        }

        /// <summary>
        /// 批量添加
        /// </summary>
        /// <author>PengZhen</author>
        /// <time>2013-11-26 13:47:47</time>
        [TestMethod]
        public void BatchInsert()
        {
            RawImageMetaData objRIMD = new RawImageMetaData();
            List<RawImageMetaDataInfo> listRIMDI = new List<RawImageMetaDataInfo>();

            for (int i = 0; i < 2; i++)
            {
                RawImageMetaDataInfo objRIMDI = new RawImageMetaDataInfo();

                Type t = objRIMDI.GetType();

                string strID = string.Empty;

                foreach (PropertyInfo pi in t.GetProperties())
                {
                    string name = pi.Name;
                    //object value1 = pi.GetValue(objRIMDI, null);

                    //xmltype数据
                    if (name.Equals("PRODUCT_USE"))
                    {
                        string str = "<name><a id=\"1\" value=\"some values\">test</a></name>";
                        pi.SetValue(objRIMDI, str, null);
                    }
                    //ST_GEOMETRY(空间数据)
                    else if (name.Equals("ENVELOPE"))
                    {
                        string str = "POINT  ( 2.00000000 2.00000000)";
                        pi.SetValue(objRIMDI, str, null);
                    }
                    //编号
                    else if (name.Equals("ID"))
                    {
                        string str = Common.Helper.SysHelper.NewGUID;
                        pi.SetValue(objRIMDI, str, null);
                    }
                    //状态
                    else if (name.Equals("STATUS"))
                    {
                        pi.SetValue(objRIMDI, "1", null);
                    }
                    //Timestamp(时间隔)
                    else if (pi.PropertyType == typeof(DateTime))
                    {
                        pi.SetValue(objRIMDI, DateTime.Now, null);
                    }
                    //Blob(影像数据)
                    else if (pi.PropertyType == typeof(byte[]))
                    {
                        string pPath = @"C:\Users\Public\Pictures\Sample Pictures\Desert.jpg";
                        FileInfo fi = new FileInfo(pPath);
                        byte[] Byte = imageToByteArray(pPath);
                        pi.SetValue(objRIMDI, Byte, null);
                    }
                    //字符串
                    else if (pi.PropertyType == typeof(string))
                    {
                        pi.SetValue(objRIMDI, "2", null);
                    }
                    //NUMBER所有类型
                    else if (pi.PropertyType == typeof(decimal))
                    {
                        pi.SetValue(objRIMDI, 1.23m, null);
                    }
                }

                listRIMDI.Add(objRIMDI);
            }

            Assert.IsTrue(objRIMD.BatchInsert(listRIMDI), "批量添加失败!");
        }

        /// <summary>
        /// 删除一条数据
        /// </summary>
        /// <author>PengZhen</author>
        /// <time>2013-11-26 13:50:51</time>
        [TestMethod]
        public void Delete()
        {
            RawImageMetaData objRIMD = new RawImageMetaData();

            Assert.IsTrue(objRIMD.Delete("35bf72ff-57c3-436f-a671-ebf67d5c4c7a"), "删除失败!");
        }

        /// <summary>
        /// 批量删除数据
        /// </summary>
        /// <author>PengZhen</author>
        /// <time>2013-11-26 13:50:55</time>
        [TestMethod]
        public void BatchDelete()
        {
            RawImageMetaData objRIMD = new RawImageMetaData();

            string strArrId = "20b8b827-699d-479d-ac8f-30af25d6c395,a2163247-17c9-472e-b886-a986f71b22f8";
            Assert.IsTrue(objRIMD.BatchDelete(strArrId), "批量删除失败!");
        }   

        /// <summary>
        /// 修改一条数据
        /// </summary>
        /// <author>PengZhen</author>
        /// <time>2013-11-26 13:53:06</time>
        [TestMethod]
        public void Update()
        {
            RawImageMetaData objRIMD = new RawImageMetaData();
            RawImageMetaDataInfo objRIMDI = new RawImageMetaDataInfo();

            //RawImageMetaDataInfo objRIMDI1 = objRIMD.GetModel("cb398854-9506-4fc2-872c-263d07b16cab");

            Type t = objRIMDI.GetType();

            string strID = string.Empty;             

            foreach (PropertyInfo pi in t.GetProperties())
            {
                string name = pi.Name;
                //object value1 = pi.GetValue(objRIMDI, null);

                //xmltype数据
                if (name.Equals("PRODUCT_USE"))
                {
                    string str = "<name><a id=\"2\" value=\"values some\">test2</a></name>";
                    pi.SetValue(objRIMDI, str, null);
                }
                //ST_GEOMETRY(空间数据)
                else if (name.Equals("ENVELOPE"))
                {
                    string str = "POINT  ( 3.00000000 3.00000000)";
                    pi.SetValue(objRIMDI, str, null);
                }
                //编号
                else if (name.Equals("ID"))
                {
                    string str = "cdce75a3-6d4e-4f91-a67f-31612bef2f86";
                    pi.SetValue(objRIMDI, str, null);
                }
                //状态
                else if (name.Equals("STATUS"))
                {
                    pi.SetValue(objRIMDI, "0", null);
                }
                //Timestamp(时间隔)
                else if (pi.PropertyType == typeof(DateTime))
                {
                    pi.SetValue(objRIMDI, DateTime.Now, null);
                }
                //Blob(影像数据)
                else if (pi.PropertyType == typeof(byte[]))
                {
                    string pPath = @"C:\Users\Public\Pictures\Sample Pictures\Jellyfish.jpg";
                    FileInfo fi = new FileInfo(pPath);
                    byte[] Byte = imageToByteArray(pPath);

                    //Byte = objRIMDI1.PRODUCT_THUMB;

                    pi.SetValue(objRIMDI, Byte, null);
                }
                //字符串
                else if (pi.PropertyType == typeof(string))
                {
                    pi.SetValue(objRIMDI, "3", null);
                }
                //NUMBER所有类型
                else if (pi.PropertyType == typeof(decimal))
                {
                    pi.SetValue(objRIMDI, 1.23m, null);
                }
            }

            Assert.IsTrue(objRIMD.Update(objRIMDI), "修改失败!");
        }

        /// <summary>
        /// 批量修改数据
        /// </summary>
        /// <author>PengZhen</author>
        /// <time>2013-11-26 14:00:59</time>
        [TestMethod]
        public void BatchUpdate()
        {
            RawImageMetaData objRIMD = new RawImageMetaData();

            List<RawImageMetaDataInfo> listRIMDI = new List<RawImageMetaDataInfo>();

            for (int i = 0; i < 2; i++)
            {
                RawImageMetaDataInfo objRIMDI = new RawImageMetaDataInfo();

                Type t = objRIMDI.GetType();

                string strID = string.Empty;

                foreach (PropertyInfo pi in t.GetProperties())
                {
                    string name = pi.Name;
                    //object value1 = pi.GetValue(objRIMDI, null);

                    //xmltype数据
                    if (name.Equals("PRODUCT_USE"))
                    {
                        string str = "<name><a id=\"3\" value=\"values some\">test3</a></name>";
                        pi.SetValue(objRIMDI, str, null);
                    }
                    //ST_GEOMETRY(空间数据)
                    else if (name.Equals("ENVELOPE"))
                    {
                        string str = "POINT  ( 4.00000000 4.00000000)";
                        pi.SetValue(objRIMDI, str, null);
                    }
                    //编号
                    else if (name.Equals("ID"))
                    {
                        string str = "29e22cbe-2ec7-40fc-8ec9-bdcb81270292";
                        if (i == 1)
                        {
                            str = "4d456b58-9b16-40b6-99cb-5ffd8f5a5187";
                        }
                        pi.SetValue(objRIMDI, str, null);
                    }
                    //状态
                    else if (name.Equals("STATUS"))
                    {
                        pi.SetValue(objRIMDI, "1", null);
                    }
                    //Timestamp(时间隔)
                    else if (pi.PropertyType == typeof(DateTime))
                    {
                        pi.SetValue(objRIMDI, DateTime.Now, null);
                    }
                    //Blob(影像数据)
                    else if (pi.PropertyType == typeof(byte[]))
                    {
                        string pPath = @"C:\Users\Public\Pictures\Sample Pictures\Koala.jpg";
                        FileInfo fi = new FileInfo(pPath);
                        byte[] Byte = imageToByteArray(pPath);
                        pi.SetValue(objRIMDI, Byte, null);
                    }
                    //字符串
                    else if (pi.PropertyType == typeof(string))
                    {
                        pi.SetValue(objRIMDI, "4", null);
                    }
                    //NUMBER所有类型
                    else if (pi.PropertyType == typeof(decimal))
                    {
                        pi.SetValue(objRIMDI, 1.23m, null);
                    }
                }

                listRIMDI.Add(objRIMDI);
            }

            Assert.IsTrue(objRIMD.BatchUpdate(listRIMDI), "批量修改失败!");
        }

        /// <summary>
        /// 图片转为Byte字节数组
        /// </summary>
        /// <author>PengZhen</author>
        /// <time>2013-11-22 16:46:24</time>
        /// <param name="FilePath">路径</param>
        /// <returns>字节数组</returns>        
        private byte[] imageToByteArray(string FilePath)
        {
            using (MemoryStream ms = new MemoryStream())
            {

                using (Image imageIn = Image.FromFile(FilePath))
                {

                    using (Bitmap bmp = new Bitmap(imageIn))
                    {
                        bmp.Save(ms, imageIn.RawFormat);
                    }

                }
                return ms.ToArray();
            }
        }
    }
}

 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 好了,写到这呢,我们整个odp的学习也就完成了,以tm_raw_image_metadata_infos表为例子的一套操作也就实现了

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值