XAF之存储非标准数据库字段

原创 2012年03月30日 14:30:27
          很多时候我们需要利用数据库存储非标准字段,即不是简单数字,货币,字符串等等,或即便是存储字符串,也希望不要直接以字符串本身存储,而是做一定的加密转换再存储,如密码。这时我们就需要用到ValueConverter类。

          先看一个例子,比如在一个XPO类中,我们要存储一个Image属性,该属性为Image类型。

[ValueConverter(typeof(DevExpress.Xpo.Metadata.ImageValueConverter))]
    public System.Drawing.Image Image {
        get { return image; }
        set {
            SetPropertyValue("Image" , ref image, value);
        }
    }
如上面的代码,只需要为该属性加上一个ImageValueConverter属性,该字段存储到数据库和从数据库解析出来都可自动完成。

ImageValueConverter是从ValueConverter继承而来,我们要实现自己的ValueConverter也要从它继承,并实现三个方法:

object  ConvertToStorageType(object)           完成XPO字段到数据库存储字段的转换

object  ConvertFromStorageType(object)     完成从数据库字段解析到XPO字段类型

Type  StorageType                    获取数据库的存储类型

   比如,现在我们要实现自己的ImageConverter:

public class ImageConverter : DevExpress.Xpo.Metadata.ValueConverter 
    {
        public override object ConvertToStorageType(object value)
        {
            if (value == null)
            {
                return null;
            }
            else 
            {
                System.IO.MemoryStream ms = new System.IO.MemoryStream();
                ((System.Drawing.Image)value).Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                return ms.GetBuffer();
            }
        }
        public override object ConvertFromStorageType(object value)
        {
            if (value == null)
            {
                return null;
            }
            else
            {
                System.IO.MemoryStream ms = new System.IO.MemoryStream((byte[])value);
                return new System.Drawing.Bitmap(ms);
            }
        }
        public override Type StorageType
        {
            get { return typeof(byte[]); }
        }
    }

使用该新的ValueConverter

[ValueConverter(typeof(ImageConverter))]
public Image Photo
{
//...
}




相关文章推荐

SharePoint 2013 在Discussion board 视图中显示非标准字段的值

本文讲述如何在SharePoint 2013 的Discussion board 视图中显示非标准字段的值。

非标准武术擂台1V1机器人示例程序

/******************************************************************* ** 文件名:擂台赛非标准平台1V1程序_检测原理AVR单片...

DICOM3.0国人中文版(非标准直译)

  • 2017年01月09日 10:19
  • 4.51MB
  • 下载

SimpowerSystems非标准教程(很经典)

  • 2011年12月15日 11:08
  • 3.95MB
  • 下载

非标准武术擂台机器人的设计思想——机械结构的设计思想

机械结构的设计思想 文章架构上准备分机械设计、灰度传感器的使用、策略设计几方面讲解。 写在前面     了解擂台赛的同学都知道,非标机器人对于结构的设计和选材方面是没有太多要求的,只对机器人的...

非标准maven工程的resource资源提交

标准的Maven工程,目录结构如下,资源都是放在"src/main/resources"下的,所以在打包成jar的时候无须特别处理。 src/main/java Application...
  • Anlegor
  • Anlegor
  • 2015年01月13日 18:31
  • 2049

如何在DreamWeaver编辑非标准扩展名的文件?

开发师常常遇到非标准的文件扩展名是用DreamWeaver打不开,如何让DreamWeaver能打开扩展名为.do或.action等的文件,我们的设置步骤如下(其他语言步骤也是一样)。 1.首先...
  • cncco
  • cncco
  • 2012年10月16日 00:22
  • 2497

Android平台非标准硬件设备驱动程序设计

Android系统是Google推出的基于Linux内核和Java架构的操作系统,在很短的时间内已成为主流的手机操作系统,并已逐步扩展应用到嵌入式系统、平板电脑和上网本上。它既有Linux系统所具有的...
  • zhgn2
  • zhgn2
  • 2012年04月02日 18:41
  • 1507
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:XAF之存储非标准数据库字段
举报原因:
原因补充:

(最多只允许输入30个字)