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。
MVC架构介绍-序列化属性的更多相关文章
- beego的MVC架构介绍
beego 的 MVC 架构介绍 beego 是一个典型的 MVC 框架,它的整个执行逻辑如下图所示: 通过文字来描述如下: 在监听的端口接收数据,默认监听在 8080 端口. 用户请求到达 8080 ...
- MVC架构介绍-Model的开发
需要在派生类实现lEntity,IEntity的两个属性EntityId和IsDeleteInDataBase,以显式方式实现 Model的所有属性存入数据库以前都要确保有相应的默认值,不要依赖数据库 ...
- 【Spring学习笔记-MVC-1.0】Spring MVC架构介绍
作者:ssslinppp 1. 核心架构图 2. 核心架构的具体流程步骤 3. 具体的核心开发步骤 4. 常用注解 5. <mvc:annotation-driven>配置 6 ...
- MVC架构介绍——自运行任务
实例产品基于asp.net mvc 5.0框架,源码下载地址:http://www.jinhusns.com/Products/Download 通过自运行任务来调度及执行程序中需要定时触发或处理的一 ...
- MVC架构介绍-事件机制
实例产品基于asp.net mvc 5.0框架,源码下载地址:http://www.jinhusns.com/Products/Download 在.net框架中,事件是将事件发送者(触发事件的对象) ...
- MVC架构介绍-框架分层
实例产品基于asp.net mvc 5.0框架,源码下载地址:http://www.jinhusns.com/Products/Download Tunynet.Infrastructurs 是我们自 ...
- MVC架构介绍—查询功能的开发
select和from语句 注意:select和from可以不设置,默认情况下: select获取映射表的所有字段: from获取实体映射表的表名:如果设置select则必须设置frorm,但是允许仅 ...
- 近乎产品MVC架构介绍-多租户模式
应用的数据部分支持多租户,租户可以是呈现区域(PersentArea)也可以是另一个应用.在数据库设计方面采用最简单的方式,在应用数据表中增加TenantTypeId(存储对应的Application ...
- 前端mvc mvp mvvm 架构介绍(vue重构项目一)
首先 我们为什么重构这个项目 1:我们现有的技术是前后台不分离,页面上采用esayUI+jq构成的单页面,每个所谓的单页面都是从后台胜场的唯一Id 与前端绑定,即使你找到了那个页面元素,也找不到所在的 ...
随机推荐
- hive、sqoop、MySQL间的数据传递
hdfs到MySQL csv/txt文件到hdfs MySQL到hdfs hive与hdfs的映射: drop table if exists emp;create table emp ( id i ...
- python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别
os._exit() 和 sys.exit() os._exit() vs sys.exit() 概述 Python的程序有两中退出方式:os._exit(), sys.exit().本文介绍这两种方 ...
- python基本数据类型之整型和浮点型
python基本数据类型之数字与浮点型 在python3中,整数的数据类型为int,而浮点数的数据类型为float.python2中整数可以是int和long(长整型)两种类型,python3只保留了 ...
- HTML <frameset>
好久不用 <frameset>确实有点手生了,直接上代码看效果吧,简单易懂 <!DOCTYPE html> <html> <head> <meta ...
- 【pycharm 警告】unittest RuntimeWarning: Parent module ” not found while handling absolute import
Pycharm 2016.2执行单元测试遇到如下问题: RuntimeWarning: Parent module ‘YOUR_MODULE_HERE’ not found while handlin ...
- two sum --无脑法
public class Solution { /* * @param numbers: An array of Integer * @param target: target = numbers[i ...
- Visual Studio 2015 将json转换为实体类
最新写的一个接口需要接收json参数,然后序列化为实体类然后再进行后面的逻辑处理.因为json中键值对比较多,逐一去手写实体中的每个属性太麻烦,于是寻思是否有这样的工具可以将json转换为实体类. 经 ...
- 「PKUWC2018」随机游走(min-max容斥+FWT)
「PKUWC2018」随机游走(min-max容斥+FWT) 以后题目都换成这种「」形式啦,我觉得好看. 做过重返现世的应该看到就想到 \(min-max\) 容斥了吧. 没错,我是先学扩展形式再学特 ...
- Android 富文本编辑器实现方案
本人实现富文本编辑器的时候,总结了如下两种方案: 1. 纯 EditText 实现方案 2. 使用ScrollView作为最外层的父容器来控制展示效果 示例demo地址为:https://github ...
- linux上面是否有安装redis,redis启动
1.进入/usr/local/src目录,下载redis # cd /usr/local/src# wget http://download.redis.io/releases/redis-4.0.6 ...