说说底层架构之实体类的设计

简介:

今天有点时间,来说说如何设计的实体类更加合理,灵活,规范.

首先,那要和真实数据表一一对应,必要的话,可以对类型抽象化,可以引入枚举,泛型列表等类型;其次,对实体要集成它的数据有效性的验证功能;再次,为了数据操作方便,有必要去引入数据表字段的列举集合;综上所述,我们来设计一个用户表实体;

本例中的知识点为:部分类,接口规范,Flag属性的枚举,迭代器等

     /// <summary>
    /// 数据实体统一接口
    /// </summary>
    public interface IDataEntity
    {
    }

     /// <summary>
    /// 用户实体
    /// </summary>
    partial class UserBase : IDataEntity
    {
        public string UserName { get; set; }
        public int Age { get; set; }
    }
     /// <summary>
    /// 实体验证类
    /// </summary>
    public class RuleViolation
    {
        /// <summary>
        /// 错误属性
        /// </summary>
        public string ErrProperty { get; private set; }
        /// <summary>
        /// 错误信息
        /// </summary>
        public string ErrMessage { get; private set; }
        public RuleViolation(string errProperty, string errMessage)
        {
            this.ErrProperty = errProperty;
            this.ErrMessage = errMessage;
        }
        public RuleViolation(string errMessage)
            : this(errMessage, null)
        {
 
        }
    }
    /// <summary>
    /// 实体验证统一接口
    /// </summary>
    public interface IEntity
    {
        /// <summary>
        /// 验证是否通过
        /// </summary>
        bool IsValid { get; }
        /// <summary>
        /// 以迭代的形式返回验证列表
        /// </summary>
        /// <returns></returns>
        IEnumerable<RuleViolation> GetRuleViolations();
    }
     /// <summary>
    /// 用户实体验证
    /// </summary>
    public partial class UserBase : IEntity
    {
 
        #region IEntity Members
 
        public bool IsValid
        {
            get { return this.GetRuleViolations().Count() == 0; }
        }
 
        public IEnumerable<RuleViolation> GetRuleViolations()
        {
            if (string.IsNullOrEmpty(this.UserName))
                yield return new RuleViolation("UserName", "用户名为能为空");
            if (this.Age == 0)
                yield return new RuleViolation("Age", "没有年龄为0的数据,至少为1");
        }
 
        #endregion
    }
     /// <summary>
    /// 表字段列举
    /// </summary>
    [Flags]
    public enum UserBaseColumns
    {
        UserName = 1,
        Age = 2,
    }
 
目录
相关文章
|
2月前
|
Cloud Native Serverless API
微服务架构实战指南:从单体应用到云原生的蜕变之路
🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
微服务架构实战指南:从单体应用到云原生的蜕变之路
|
5月前
|
缓存 Cloud Native Java
Java 面试微服务架构与云原生技术实操内容及核心考点梳理 Java 面试
本内容涵盖Java面试核心技术实操,包括微服务架构(Spring Cloud Alibaba)、响应式编程(WebFlux)、容器化(Docker+K8s)、函数式编程、多级缓存、分库分表、链路追踪(Skywalking)等大厂高频考点,助你系统提升面试能力。
254 0
|
12月前
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
Cloud Native Devops 云计算
云计算的未来:云原生架构与微服务的革命####
【10月更文挑战第21天】 随着企业数字化转型的加速,云原生技术正迅速成为IT行业的新宠。本文深入探讨了云原生架构的核心理念、关键技术如容器化和微服务的优势,以及如何通过这些技术实现高效、灵活且可扩展的现代应用开发。我们将揭示云原生如何重塑软件开发流程,提升业务敏捷性,并探索其对企业IT架构的深远影响。 ####
340 3
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####
|
8月前
|
Cloud Native Serverless 流计算
云原生时代的应用架构演进:从微服务到 Serverless 的阿里云实践
云原生技术正重塑企业数字化转型路径。阿里云作为亚太领先云服务商,提供完整云原生产品矩阵:容器服务ACK优化启动速度与镜像分发效率;MSE微服务引擎保障高可用性;ASM服务网格降低资源消耗;函数计算FC突破冷启动瓶颈;SAE重新定义PaaS边界;PolarDB数据库实现存储计算分离;DataWorks简化数据湖构建;Flink实时计算助力风控系统。这些技术已在多行业落地,推动效率提升与商业模式创新,助力企业在数字化浪潮中占据先机。
446 12
|
12月前
|
Java 开发者 微服务
从单体到微服务:如何借助 Spring Cloud 实现架构转型
**Spring Cloud** 是一套基于 Spring 框架的**微服务架构解决方案**,它提供了一系列的工具和组件,帮助开发者快速构建分布式系统,尤其是微服务架构。
940 69
从单体到微服务:如何借助 Spring Cloud 实现架构转型
|
10月前
|
传感器 监控 安全
智慧工地云平台的技术架构解析:微服务+Spring Cloud如何支撑海量数据?
慧工地解决方案依托AI、物联网和BIM技术,实现对施工现场的全方位、立体化管理。通过规范施工、减少安全隐患、节省人力、降低运营成本,提升工地管理的安全性、效率和精益度。该方案适用于大型建筑、基础设施、房地产开发等场景,具备微服务架构、大数据与AI分析、物联网设备联网、多端协同等创新点,推动建筑行业向数字化、智能化转型。未来将融合5G、区块链等技术,助力智慧城市建设。
489 1

热门文章

最新文章