利用特性(Attribute)对实体类进行验证

对于XML的内容,我这边的处理方式是将它反序列化成实体对象,毕竟操作一 个实体对象比一大堆的XPath强多了。

.net framework自带的XML序列化和反序列化类 System.Xml.Serialization.XmlSerializer由于内部实现过于复杂,导致性能不 佳。我这边自己实现了一个XML反序列化类,性能虽好但比较有针对性,所以今 天还是以.net framework自带的XML反序列化类作为示范。

比如说一个XML的内容是这样:

<? xml version = "1.0" encoding = "utf-8"?>
<OrderRequest>
<!-- 订单号 -->
<OrderNo>T-1234567</OrderNo>
<!-- 商品名称 -->
<CommodityName>笔记本电脑</CommodityName>
<!-- 商品数量 -->
<CommodityAmount>1</CommodityAmount>
<!-- 商品重量 单位:KG -->
<CommodityWeight>5.27</CommodityWeight>
<!-- 商品价格 -->
<CommodityValue>13999.00</CommodityValue>
<!-- 希望到达时间 -->
<HopeArriveTime>2010-09-01 00:00:00</HopeArriveTime>
<!-- 结算方式 只能为现结、到付和月结三种 -->
<PayMent>现结</PayMent>
<!-- 备注 -->
<Remark>小心轻放</Remark>
</OrderRequest>

当然,正常的订单不会只有这么点内容,下面我们要为它设计一个实体 类:

/// <summary>
      /// 订单实体类
      /// </summary>
      public class OrderRequest
      {
           /// <summary>
           /// 订单号
           /// </summary>
           public string OrderNo { get; set; }
           /// <summary>
           /// 商品名称
           /// </summary>
           public string CommodityName { get; set;  }
           /// <summary>
           /// 商品数量
           /// </summary>
           public string CommodityAmount { get; set;  }
           /// <summary>
           /// 商品重量
           /// </summary>
           public string CommodityWeight { get; set;  }
           /// <summary>
           /// 商品价格
           /// </summary>
           public string CommodityValue { get; set;  }
           /// <summary>
           /// 希望到货时间
           /// </summary>
           public string HopeArriveTime { get; set;  }
           /// <summary>
           /// 结算方式
           /// </summary>
           public string PayMent { get; set;}
           /// <summary>
           /// 备注
           /// </summary>
           public string Remark { get; set; }
      }

时间: 2024-08-19 00:48:32

利用特性(Attribute)对实体类进行验证的相关文章

求助:MyEclipse下hibernate利用数据库反向生成实体类

问题描述 数据库中有些多对多,一对多的实体情况,在java类中怎么表现出来?谢谢 解决方案 解决方案二:直接反出来,你标题不是都写了吗只要你数据库的关系设置对了,那么在myeclipse里自动生成的类的映射关系也会自动生成解决方案三:引用1楼youfeng445的回复: 直接反出来,你标题不是都写了吗只要你数据库的关系设置对了,那么在myeclipse里自动生成的类的映射关系也会自动生成 +1解决方案四:楼主手动编写Entity代码?需要在一方的get***List前面加@OneToMany()

MyEclipse和MySql连接利用hibernate反向生成实体类遇到空指针怎么解决?

问题描述 !ENTRYorg.eclipse.core.jobs422014-10-0416:08:18.576!MESSAGEAninternalerroroccurredduring:"GeneratingArtifacts".!STACK0java.lang.NullPointerExceptionatorg.hibernate.mapping.ForeignKey.alignColumns(ForeignKey.java:77)atorg.hibernate.mapping.F

MVC4数据验证,页面不允许输入非实体类类型,如何解决?

问题描述 用MVC4创建了一个网站目标框架:.NETFramework4.0数据库:SQLite用的是"ADO.NET实体数据模型"的方式连接数据库的.生成的实体类publicpartialclassQueryInfo{[Key]publiclongQueryId{get;set;}[Display(Name="店名")][Required(ErrorMessage="必填")]publiclongShopCode{get;set;}[Displ

hibernate-eclipse如何利用数据库反向生成Hibernate多对多、一对多实体类(生成全部为int类型)。

问题描述 eclipse如何利用数据库反向生成Hibernate多对多.一对多实体类(生成全部为int类型). 如题 解决方案 如果你表的关系建好了,,直接通过dataSource就能反向生成了 解决方案二: Myeclipse 连接到你的数据库,在对应的表上右击,点hibernate reserve ,然后一步步操作下去,就会成功 解决方案三: /* SQLyog Ultimate v10.00 Beta1 MySQL - 5.6.26-log : Database - db_template

掌握 ASP.NET 之路:自定义实体类简介

asp.net 摘要:有些情况下,非类型化的 DataSet 可能并非数据操作的最佳解决方案.本指南的目的就是探讨 DataSet 的一种替代解决方案,即:自定义实体与集合.(本文包含一些指向英文站点的链接.) 本页内容引言 DataSet 存在的问题 自定义实体类 对象关系映射 自定义集合 管理关系 高级内容 小结 引言ADODB.RecordSet 和常常被遗忘的 MoveNext 的时代已经过去,取而代之的是 Microsoft ADO.NET 强大而又灵活的功能.我们的新武器就是 Sys

温故而知新:c#中的特性(attribute)

特性(Attribute)是微软在.Net中自创的一种新技术,对于很多初学者来讲,特性一直是一块难啃的骨头. 既然弄不懂,那我们就暂时绕过它吧,回想一下我们在写代码时通常都要求写注释,为了是让别人或自己以后能看得懂,但是这个注释是写给"人"看的,突发奇想一下:我们能不能写出一种注释,给c#编译器看,比如我们在某些代码上打个标记,让编译器看到这些标记后,做出不同的反应? 其实...这就是特性,比如我们定义一个常规的类 public class Product { public strin

EF里如何定制实体的验证规则和实现IObjectWithState接口进行验证以及多个实体的同时验证

原文:EF里如何定制实体的验证规则和实现IObjectWithState接口进行验证以及多个实体的同时验证 之前的Code First系列文章已经演示了如何使用Fluent API和Data Annotation的方式配置实体的属性,比如配置Destination类的Name属性长度不大于50等.本文介绍EF里更强大的Validation API达到实体属性验证的效果.主要是通过ValidationAttributes属性和IValidatebleObject接口来进行的验证.   一.实体属性

C#开发教程之利用特性自定义数据导出到Excel_C#教程

网上C#导出Excel的方法有很多.但用来用去感觉不够自动化.于是花了点时间,利用特性做了个比较通用的导出方法.只需要根据实体类,自动导出想要的数据 1.在NuGet上安装Aspose.Cells或者用微软自带类库也可以 2.需要导出的数据的实例类: using System.ComponentModel; using System.Reflection; using System.Runtime.Serialization; public class OrderReport { [Displa

实体类的变形【2】—— 行列转换

     上次说了一下在网页里面显示列表数据的情况,这个应用范围太小了,添加.修改怎么办呢?网站的后台管理.OA.CRM等怎么办?还是这样处理显然是不行的.   我们还是看一个小例子,这回是数据库设计的.   假设我们要做一个小学的成绩单,设计一个成绩表 小学生成绩表 字段:学生名称.语文成绩.数学成绩.美术成绩等. 小学里的课程是有限的,就那么几个,都作为字段放在表里面就ok了. 如果我们现在要做一个中学的成绩单呢?物理.化学.生物.地理.历史课程增加了不少,还是往用往表里面增加字段的方式吗?