zoukankan      html  css  js  c++  java
  • 创建领域层

    系列文章总目录

    创建项目

    创建解决方案管理器

    打开vs>创建新项目>选择ASP.NET Core Web 应用程序>选择Web Api。

    项目名称依据个人习惯,命名为Nm.Reservation.Api。

    创建Domain项目

    在创建好的解决方案管理其中选择添加,类库.NET Core。

    命名为Nm.Reservation.Domain

    添加依赖项

    选择管理NuGet程序包,添加Volo.Abp.Ddd.Domain。

    创建Module

    创建类文件,类文件名称根据Abp vnext框架的默认约定可以命名为ReservationDomainModule。集成Abp vnext基类AbpModule,并在类上添加特性AbpDddDomainModule。

    using Volo.Abp.Domain;
    using Volo.Abp.Modularity;
    
    namespace Nm.Reservation.Domain
    {
        [DependsOn(typeof(AbpDddDomainModule))]
        public class ReservationDomainModule : AbpModule
        {
    
        }
    }

    创建实体

    更具项目介绍中的业务需求,我们首先创建预约信息管理类:

    using System;
    using System.Collections.Generic;
    using System.Collections.ObjectModel;
    using System.Diagnostics.CodeAnalysis;
    using System.Linq;
    using Volo.Abp;
    using Volo.Abp.Domain.Entities.Auditing;
    
    namespace Nm.Reservation.Domain
    {
        /// <summary>
        /// 预约管理信息
        /// </summary>
        public class ReservationManagerInfo : FullAuditedAggregateRoot<Guid>
        {
            /// <summary>
            /// 名称
            /// </summary>
            public string Name
            {
                get;
                protected set;
            }
            /// <summary>
            /// 开放天数
            /// </summary>
            public int OpenDays
            {
                get;
                protected internal set;
            }
            /// <summary>
            /// 是否包含当天
            /// </summary>
            public bool IncludeDay
            {
                get;
                protected internal set;
            }
            /// <summary>
            /// 附记
            /// </summary>
            public string ScriptPost
            {
                get;
                set;
            }
            /// <summary>
            /// 预约条件集合
            /// </summary>
            public ICollection<ReservationCondition> ReservationConditions
            {
                get;
                protected internal set;
            }
            public ReservationManagerInfo(
                Guid id, [NotNull]string name, [NotNull]int openDays, string scriptPost = null)
            {
                Id = id;
                Name = name;
                OpenDays = openDays;
                ScriptPost = scriptPost;
                ReservationConditions = new Collection<ReservationCondition>();
            }
            public virtual void SetOpenDays(int days)
            {
                OpenDays = days;
            }
            public void SetIncludeDay(bool include)
            {
                IncludeDay = include;
            }
            public virtual void AddReservationCondition(ReservationCondition reservation)
            {
                Check.NotNull(reservation, nameof(reservation));
                ReservationConditions.Add(reservation);
            }
            public virtual void RemoveReservationCondition(ReservationCondition reservation)
            {
                Check.NotNull(reservation, nameof(reservation));
                ReservationConditions.RemoveAll(
                    d => d.ItemName == reservation.ItemName && d.ItemValue == reservation.ItemValue);
            }
            public virtual ReservationCondition FindReservationCondition(string itemName)
            {
                return ReservationConditions.FirstOrDefault(d => d.ItemName == itemName);
            }
        }
    }

    预约信息管理类集成了Abp聚合跟基类,从我们的业务上可以看到,预约管理信息与预约条件形成了聚合的业务逻辑,预约条件信息依赖于预约管理信息,与预约管理信息同生共死。

    属性的访问修饰符设置为私有与internal,这样可以更好的管理预约信息并且保证数据的安全性。为预约条件信息设置三个方法,分别实现添加、删除、查询。为开放天数、是否包含当天设置方法,可以在后续的应用中修改这两个信息。

  • 相关阅读:
    分片副本监控优化备份分词器03
    es score限制
    German Collegiate Programming Contest 2017 G. Water Testing
    SQL注入以及sqlmap初体验
    BUUCTF [极客大挑战 2019]Upload 1
    DVWA—File Upload 文件上传
    DVWA—XSS 跨站脚本攻击
    WUSTCTF2020 佛说:只能四天
    猪圈密码
    2016全国大学生信息安全竞赛 破译
  • 原文地址:https://www.cnblogs.com/GiserPage/p/13306782.html
Copyright © 2011-2022 走看看