技术汪丨MVC公司架构介绍-序列化属性

Posted 近乎SNS

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了技术汪丨MVC公司架构介绍-序列化属性相关的知识,希望对你有一定的参考价值。

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

优点:

一个实体的可序列化属性统一序列化后存储到数据库,因此增、减可序列化属性无需变更数据库设计;

缺点:

仅支持简单的数据类型,例如:string、bool、int、datetime等;

由于可序列化属性统一序列化后存储到数据库,因此不能通过sql语句使用可序列化属性作为查询条件或排序条件。


技术汪丨MVC公司架构介绍-序列化属性


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


技术汪丨MVC公司架构介绍-序列化属性


使用方法 :

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公司架构介绍-序列化属性的主要内容,如果未能解决你的问题,请参考以下文章

MVC 返回json数据 怎么忽略序列化某个属性

MVC中JSON字符长度超出限制

ASP.NET MVC:用JsonResult控制属性名的序列化。

MVC架构——怎样利用Json在View和Controller之间传递数据

.net MVC 使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错,字符串的长度超过了为 maxJsonLength 属性设置的值

ASP.NET MVC 3 控制器 .Json 方法序列化不查看 DataMember Name 属性