元数据(metadata)在企业应用开发中的作用

数据

元数据(metadata)在企业应用开发中的作用

元数据(metadata)介绍:
Metadata(元数据),它是“关于数据的数据”(data about data),近年来在软件设计中Metadata有广泛的应用。
在编程中,元数据不是被处理的对象,而是通过改变元数据的一些“值”来改变程序的运行的数据。
可以“解释”程序的运行时,不同的元数据值可以让同一段程序有不同的运行结果。
元数据(metadata)应用:

在以前的工作中,经常遇到这样的问题,

SqlServer数据库中一个表如下:

CREATE TABLE [dbo].[DProfile] (

       [Profile_ID] [int] IDENTITY (1, 1) NOT NULL ,

       [ProfileName] [varchar] (250) COLLATE Chinese_PRC_CI_AS NULL ,

       [OtherInfo] [varchar] (500) COLLATE Chinese_PRC_CI_AS NULL ,

       [ValidateStatus] [int] NULL

) ON [PRIMARY]

为其定义一个实体类:

namespace E_Commerce.Data

{

       /// <summary>

       /// 卡属性基本信息实体

       /// </summary>

       public class DProfileInfo

       {

              /// <summary>

              /// 其他信息

              /// </summary>

              public string OtherInfo

              {

                     get

                     {

                            /*Begin Template                       

return mOtherInfo;                 

                            /*End Template Expansion{9D774738-E901-427A-86E7-EF2715768C17}*/

                     }

                     set

                     {

                            /*Begin Template Expansion{F6A2B75D-D01B-47B0-B65D-E62E43286DDC}*/

                            mOtherInfo = value;                    

                            /*End Template Expansion{F6A2B75D-D01B-47B0-B65D-E62E43286DDC}*/

                     }

              }

              /// <summary>

              /// 卡属性ID

              /// </summary>

              public int Profile_ID

              {

                     get

                     {

                            /*Begin Template Expansion{2230D3C4-9766-4778-9203-5063D88B468C}*/

                            return mProfile_ID;              

                            /*End Template Expansion{2230D3C4-9766-4778-9203-5063D88B468C}*/

                     }

                     set

                     {

                            /*Begin Template Expansion{0A1C9514-4DDB-4079-BE19-8DACE24CD454}*/

                            mProfile_ID = value;                   

                            /*End Template Expansion{0A1C9514-4DDB-4079-BE19-8DACE24CD454}*/

                     }

              }

              /// <summary>

              /// 卡属性名称

              /// </summary>

              public string ProfileName

              {

                     get

                     {

                            /*Begin Template Expansion{A43788B8-60A0-4882-9C51-A3DEE710FE78}*/

                            return mProfileName;                  

                            /*End Template Expansion{A43788B8-60A0-4882-9C51-A3DEE710FE78}*/

                     }

                     set

                     {

                            /*Begin Template Expansion{829EEF0A-A18A-4492-BE57-67C4C57ACFC3}*/

                            mProfileName = value;                

                            /*End Template Expansion{829EEF0A-A18A-4492-BE57-67C4C57ACFC3}*/

                     }

              }

              private string mOtherInfo;

              private int mProfile_ID;

              private string mProfileName;

       }

}
在开发和实际运行过程中经常发生这样情况,经过一段时间用户的实际情况变化了,可能想要在上面的实体中和其所对应的数据库的Table中增加一个或多个Field。我们只能修改这个数据实体,在代码开发完成后,进行这样的修改是麻烦而且可能相当危险的。

设想一下现在的情况,由于种种原因需要更改上面的数据结构,我们打算增加两个字段“Price”“CreateTime”,有什么方法可以让数据实体容易适应的进行这种变化呢

两种方法:

1)  在表DProfile中增加一个描述所增加的Field的元数据字段名称为FieldsMetaInfo,数据类型可以定义成Text类型或image等二进制类型,在这个字段中定义一个XML格式的文档描述和存储所新增加的Field。

格式可能是这样的

<Field Name="Price" FromBaseType="TRUE" Type="Text" DisplayName="价格" Required="TRUE" MaxLength="255" DefaultValue=”0”  >123.45</Field>

<Field Name=" CreateTime " FromBaseType="TRUE" Type="DateTiem" DisplayName="价格" Required="TRUE"  >2004-01-01</Field>

这个新添加的字段记录未来可能增加的field的数据类型信息和数据信息等其它信息

2)  增加两个表

在表中存储新增加的Field信息

表ProfileFields

ID  int

FieldName nvarchar(50)

FieldType  nvarchar(50)

表ProfileFieldsValue

ID int

ProfileID int

ProfileValue varchar(50)

ProfileFields表存储增加的Field名称类型等信息

表ProfileFieldsValue表存储对应Filed的值

 

在数据实体类中增加一个自定义类型的属性返回存储在源数据结构中的数据

可以是Hashtable类型,也可以是自定义的其它集合类型

Private Hashtable metaFieldsList;

自定义结构用来方便的存储和更新

 

元数据(metadata)数据存储结构:
元数据有许多存储格式,其中最多使用的是xml格式。
xml最适合用来存储元数据,易与使用和解析。

元数据(metadata)在o-r映射中所起的作用:

 

时间: 2024-08-30 21:02:11

元数据(metadata)在企业应用开发中的作用的相关文章

在企业应用开发中遵循开源协议

最近看到一个关于开源协议的图,想到我们平时在企业应用开发中也在大量使用开源软件,那么我们应该怎么对待这些开源软件呢,所以简单的写下了这篇博客. 在企业应用开发中,为了提高开发效率,经常可能会用到一些开源的软件.项目.组件.在使用这些开源项目的时候,必须要先看好其开源协议,免得被Challenge.网上有很多文章介绍各种开源协议以及其进行比较的,我就不在此老生常谈了,我只说是该怎么用. 这里指的企业应用开发,主要是希望实现尽量闭源以保护自己的知识成果,尽量免费以降低成本. 对于Apache Lic

重新认识SEO在企业网络推广中的作用

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 好久没有写关于SEO方面的文章了,最近身边不少做企业的朋友都问我SEO应该怎么做,大家纷纷摩拳擦掌跃跃欲试,在他们眼里,SEO已然成为节约推广成本的灵丹妙药了. 可是在我们这样专业做SEO的人眼里,SEO的黄金时期已经过去了,就好比过山车,穿越了最疯狂.最刺激的最高点,现在已经处在下坡段了. 看到这种情况,我觉得应该写一篇关于如何对待SEO在

逻辑思维在电商企业网络营销中的作用大了

中介交易 SEO诊断 淘宝客 云主机 技术大厅 相对于理性的销售逻辑而言,营销逻辑大多是感性的,你必须让客户认同,让客户明白你是最适合TA的.在营销的逻辑思维里,理性是用来帮助客户做判断的,只有感性才真正左右客户的选择. 新电商时代,对于电商企业网络营销来讲,不懂得抓住访客的注意力就等于让自己坐以待毙.电商企业要想实现营销成功并真正达成吸睛吸金.营销创收的目标,就必须改变传统上静默堆砌的冷页面网站模式和泛滥成灾的网络推广,将理性和感性结合下的自我造血改革进行到底,并将逻辑思维的应用在企业营销中应

silverlight在企业应用开发中的定位

从silverlight 1开始,MS对这个技术的定位似乎更重视于互联网应用的娱乐性体验,但是,我认为 silverlight技术应该更多关注一下企业应用的解决方案. 把html应用于企业应用的原始动力是易于维护和部署,但是由于html的设计先天上就只是为了内容的 展示而非交互,因此在实现企业应用中常有的复杂逻辑.界面逻辑控制方面根本就是草率应付,虽然后来 加入了JS来扩展应用,但是基础html规范的简陋,使得即使我们只是想要实现一个限定类型的输入框,也 不得复制一堆堆繁琐而丑陋的代码. 另外一

请问一下企业应用软件开发中,应用到的设计模式多吗?我感觉没怎么用啊?

问题描述 如题,Struts,Spring等框架本身应用了不少设计模式除外,另外有没有什么好的源码学习的!框架代码除外!! 解决方案 做业务系统开发, 和 做技术框架开发的方向性是不一样的. 还有设计模式一般用到的都是公用的方法都会封装起来,然后你去调用,做业务系统上很难说是,业务需求上需要你去自己用设计模式来写代码~解决方案二:推荐书籍:http://product.dangdang.com/product.aspx?product_id=71052解决方案三:yeqing4562011 说的

详细了解Transformer Stage组件在DataStage job开发中的作用

IBM InfoSphere DataStage 是业界主流的 ETL(Extract, Transform, Load) 工具,它使用了 Client-Server 架构,在服务器端存储所有的项目和元数据,并支持在多重数据结构中对大量数据进行收集.整合和转换.客户端 DataStage Designer 为整个 ETL 过程提供了一个图形化的开发环境,用户在 Designer 中对 DataStage Job 的进行设计和开发.DataStage 中提供了多个过程处理 Stage 来满足 ET

三大方面解析生产管理在实现企业经营目标中的作用(一)

生产管理是指为实现企业的经营目标,有效地利用生产资源,对生产过程进行组织.计划.控制,生产出满足社会需要.http://www.aliyun.com/zixun/aggregation/10241.html">市场需求的产品或提供服务的管理活动的总称.生产管理的任务是合理使用企业人力.物力.财力.信息和知识等各种资源,生产出满足客户要求的产品,实现企业的经营目标和发展战略. 企业生产管理的内容,可以概括为以下三大方面: 1.确定合理的生产组织形式 生产组织形式是企业组织生产经营活动的一种制

网络在企业数字化转型中的4大作用

当前,数字化变革被描述为在商业和社会等各个方面通过数字化技术应用而引发的相应变化.然而与电子商务不同,随着数字化转型需求扩展到企业内部,逐步与企业业务功能.流程产生交集,并已成为企业重塑商业运作的新动力. 网络在企业数字化转型中的作用 需要注意的是,在企业进行数字化转型的过程中,网络也同样发挥着不容忽视的关键性作用,具体表现为以下几点: 1.速度需要 伴随企业业务的逐步拓展,数据流程.业务应用变得越来越复杂,这就需要企业拥有一个稳定.快速的网络基础设施作为平台支撑,特别是在跨越业务.区域边界的数

企业开发中选择logback而不是log4j的理由

不知道看到这篇文章的Java工程师有没有考虑过这个问题:为什么在企业开发中会选择logback来记录日志,而不是log4j呢? 如果你以前没有考虑过这个问题,那么现在如果让你考虑一下,你可能觉的会是因为什么原因呢?本文就来为你回答这个问题.   无论从设计上还是实现上,Logback相对log4j而言有了相对多的改进.不过尽管难以一一细数,这里还是列举部分理由为什么选择logback而不是log4j.牢记logback与log4j在概念上面是很相似的,它们都是有同一群开发者建立.所以如果你已经对