zoukankan      html  css  js  c++  java
  • MVC架构介绍-序列化属性

     实例产品基于asp.net mvc 5.0框架,源码下载地址:http://www.jinhusns.com/Products/Download

    在设计时,如果能够预测到一些实体可能在后续的研发(或二次开发)中增加一些属性,为了能够快速增、减这类属性,提供了可序列化属性的设计机制。可序列化属性具有以下特点:

    优点:
    一个实体的可序列化属性统一序列化后存储到数据库,因此增、减可序列化属性无需变更数据库设计;
    缺点:
    仅支持简单的数据类型,例如:string、bool、int、datetime等;
    由于可序列化属性统一序列化后存储到数据库,因此不能通过sql语句使用可序列化属性作为查询条件或排序条件。

     

    在实体对应的数据库表添加:PropertyNames、PropertyValues两个字段(设置为可空字段);

    使用方法:
    1、从SerializablePropertiesBase派生自己的实体类,并加Serializable标注;
    2、可序列化属性,由于无需对应数据库表的存储,因此必须添加[Ignore](orm标注,防止映射),调用时和普通属性一样;

    SerializablePropertiesBase是我们可序列化属性的基类,里面对我们序列化进行处理。

    实现原理:
    PropertyNames =EnableRatings:S:0:4:EnableTrackBacks:S:4:4:CommentModerationType:S:8:4:
    PropertyValues=TrueTrueNone
    “S:0:4"表示在PropertyValues字段中的字符从位置0开始长度为4位的子字符串属于“EnableRatings"的属性值,同理:"S:4:4"表示,从位置4开始,长度为4位的子字符串属于“EnableTrackBacks”的属性值,依次类推可以获得PropertyNames所有的字段的值。(其中S代表存储格式是字符串,由于目前全部以字符串存储所以不需特别关注)。因此可以解析出属性EnableRatings对应的值True。

  • 相关阅读:
    范仁义css3课程---7、文本样式2
    android图片缓存框架Android-Universal-Image-Loader(二)
    Android 开源框架Universal-Image-Loader完全解析(三)---源代码解读
    憨人 音译
    Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用
    Android 开源框架Universal-Image-Loader完全解析(二)--- 图片缓存策略详解
    Android开发
    87狂热
    迟志强
    翟惠民
  • 原文地址:https://www.cnblogs.com/tuoyu123/p/8509857.html
Copyright © 2011-2022 走看看