实例产品基于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。

MVC架构介绍-序列化属性的更多相关文章

  1. beego的MVC架构介绍

    beego 的 MVC 架构介绍 beego 是一个典型的 MVC 框架,它的整个执行逻辑如下图所示: 通过文字来描述如下: 在监听的端口接收数据,默认监听在 8080 端口. 用户请求到达 8080 ...

  2. MVC架构介绍-Model的开发

    需要在派生类实现lEntity,IEntity的两个属性EntityId和IsDeleteInDataBase,以显式方式实现 Model的所有属性存入数据库以前都要确保有相应的默认值,不要依赖数据库 ...

  3. 【Spring学习笔记-MVC-1.0】Spring MVC架构介绍

    作者:ssslinppp       1. 核心架构图 2. 核心架构的具体流程步骤 3. 具体的核心开发步骤 4. 常用注解 5. <mvc:annotation-driven>配置 6 ...

  4. MVC架构介绍——自运行任务

    实例产品基于asp.net mvc 5.0框架,源码下载地址:http://www.jinhusns.com/Products/Download 通过自运行任务来调度及执行程序中需要定时触发或处理的一 ...

  5. MVC架构介绍-事件机制

    实例产品基于asp.net mvc 5.0框架,源码下载地址:http://www.jinhusns.com/Products/Download 在.net框架中,事件是将事件发送者(触发事件的对象) ...

  6. MVC架构介绍-框架分层

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

  7. MVC架构介绍—查询功能的开发

    select和from语句 注意:select和from可以不设置,默认情况下: select获取映射表的所有字段: from获取实体映射表的表名:如果设置select则必须设置frorm,但是允许仅 ...

  8. 近乎产品MVC架构介绍-多租户模式

    应用的数据部分支持多租户,租户可以是呈现区域(PersentArea)也可以是另一个应用.在数据库设计方面采用最简单的方式,在应用数据表中增加TenantTypeId(存储对应的Application ...

  9. 前端mvc mvp mvvm 架构介绍(vue重构项目一)

    首先 我们为什么重构这个项目 1:我们现有的技术是前后台不分离,页面上采用esayUI+jq构成的单页面,每个所谓的单页面都是从后台胜场的唯一Id 与前端绑定,即使你找到了那个页面元素,也找不到所在的 ...

随机推荐

  1. mysql常用连接查询

    连接数据库PDO $user = "root"; //数据库连接账号 $pass = "root"; //数据库连接密码 $dbname = "tes ...

  2. 冲刺博客NO.8

    今天做了什么: 多天学习后,实现了短信验证的功能,可以选择国家,可以在Mob的后台管理短信验证 遇到的困难: 注册回调事件,afterEvent的判定(事件完成后调用)

  3. PB9.0连接sqlserver2008 R2

    pb9不支持sql2000以上版本的数据库直连.因此要连接2000以上的版本必须用odbc. windows下的odbc管理器打开方式:窗体键+R 调出运行对话框 输入 odbcad32 确定弹出od ...

  4. Python自动化开发 - MySQL(一)

    本节内容 一.概述 二.下载安装 三.数据库操作 四.数据表操作 五.表内容操作 一.概述 1.什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库 2.什么 ...

  5. RunTime之类与对象

    我们知道,Objective-C是一门动态语言,它将很多静态语言在编译时期做的事放到了运行时来处理.用C++编写的程序通过编译器直接把函数地址硬编码进入可执行文件:而Objective-C无法通过编译 ...

  6. 【leetcode】 算法题3 无重复字符的最长子串

      问题      给定一个字符串,找出不含有重复字符的最长子串的长度. 示例: 给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ,那么长度 ...

  7. 背水一战 Windows 10 (81) - 全球化

    [源码下载] 背水一战 Windows 10 (81) - 全球化 作者:webabcd 介绍背水一战 Windows 10 之 全球化 Demo 格式化数字 示例1.演示全球化的基本应用Locali ...

  8. python 使用多进程实现并发编程/使用queue进行进程间数据交换

    import time import os import multiprocessing from multiprocessing import Queue, pool ""&qu ...

  9. Javascript高级编程学习笔记(8)—— 变量

    日常更新~~ 变量 所有的编程语言中,变量都是赋予语言灵活性的根本所在. 那么JS中的变量又有那些与众不同的地方呢.? 按照ECMA-262的定义,JS的变量和其他编程语言的变量有很大的区别 其松散类 ...

  10. python编译生成的.pyc作用

    如果 Python 进程在机器上拥有写入权限,那么它将把程序的字节码保存为一个以 .pyc 为扩展名的文件( ".pyc" 就是编译过的 ".py" 源代码). ...