Asp.net MVC + Redis(hash入库+log4net集成)

博客四元素

既然要写一个博客类的网站,那就应该知道博客的相关信息。

标题 作者 时间 内容
title author time content

因为之前有了解过Redis,所以有点纠结于数据的存储方式,最终决定还是按照书上写的一步一步来,搞完了之后再决定是不是需要做修改。

书中介绍的存储方式如下:

post:count title 小猿的博客
author 小猿
time 2018.5.17
content 世界如此美妙,我却选择的程序员

看的出来博客的所有内容都是以HashSet形式存储的(目前状态),保证存储内容的唯一性取决于post:count的count,这个count应该类似于自增变量。

  1. 既然是面向对象编程,第一件事肯定是创建一个实体类;

    using System;
    using System.Collections.Generic;
    using System.Text;
    using Blog.Common;
    
    namespace Blog.Models
    {
    public class BLogModel
    {
        public BLogModel(string title, string author, DateTime time, string content)
        {
            bool flag = true;
            if (!title.IsNullOrEmpty())
                this.title = title;
            else
                flag = false;
    
            if (!author.IsNullOrEmpty())
                this.author = author;
            else
                flag = false;
    
            if (time == null)
                flag = false;
            else
                this.time = time;
    
            if (!content.IsNullOrEmpty())
                this.content = content;
            else
                flag = false;
    
                if(flag==false)
                {
                    throw new ApplicationException("创建BLogModel实体有必填字段为空");
                }
        }
        public string title { get; set; }
    
        public string author { get; set; }
    
        public DateTime time { get; set; }
    
        public string content { get; set; }
    }
    }

    创建这个实体类,我住了定义字段之外主要做了两件事。

    ①由于在我的SDK里没有找到判空的方法,所以给string写一个扩展方法IsNullOrEmpty

    ②每一个博客对象都应该是完整的即每个字段都是必填项,因为使用的是Redis存储也就只能在C#中判断必填项了;

    这里还说到另外一个问题,通常情况下需要建立文章缩略名称和文章ID的关联关系。这样做的目的是为了确保文章的唯一性和符合网站网址规范上的一些操作。但是现在还不打算启用这一操作。

  2. 纠结的入库方式

    本来我想的是在控制器中获得数据然后调用RedisCommon的方法获取一个连接对象添加一下就行了,但是代码写了很长一行才搞定exist的判断,有点忍不了。还是决定把所有数据都扔给RedisCommon类叫他来完成这件事情。

    首先一打开这个类我就决定先写一个扩展方法(我可能最近比较迷恋写扩展),和之前的ToDic正好相反,这次是把Dictionary

你可能感兴趣的:(Asp.net,core,mvc)