ASp.net Core EF ActionFilterAttribute AOP

本文介绍了如何在ASP.NET Core项目中实现数据修改日志记录。通过创建数据库表和使用EF操作,结合ActionFilterAttribute或AOP(使用Castle.DynamicProxy)来记录日志。首先,展示了创建ASP.NET Core项目、数据库表和配置的基本步骤。然后,利用ActionFilterAttribute创建LogAttribute类,在控制器Action前后记录日志。接着,通过Autofac的AOP特性,创建LogInterceptor和UsageAttribute,动态拦截需要记录日志的方法。最后,演示了如何将Autofac注入到ASP.NET Core的DI中,并提供源码下载和相关参考资料。
摘要由CSDN通过智能技术生成

在项目中经常遇到一些数据的修改,很多时候业务方需要一个修改日志记录,这里我们计划用mssql数据库来存放日志记录,用EF来操作,记录日志可以用mvc的ActionFilterAttribute 来完成也可以用AOP来完成。以前在asp.net的AOP用的是IMessageSink这里我们计划用Castle.DynamicProxy来完成。

准备工作:

创建数据库表:

CREATE TABLE [dbo].[logs](
	[Id] [int] IDENTITY(1,1) NOT NULL,
	[Title] [nvarchar](50) NULL,
	[Content] [nvarchar](max) NULL,
	[CreateTime] [datetime] NULL,
 CONSTRAINT [PK_logs] PRIMARY KEY CLUSTERED 
(
	[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

这里的Title是根据业务划分的,Content是修改后的内容,实际生产应该还要加上修改人。这里都简化了(个人并不推荐用EF来迁移数据)

创建 Asp.netCore项目

这里我们以asp.netcore2.2创建一个WebAppLog视图模型程序

在appsettings.json添加数据库连接串:

 "ConnectionStrings": {
    "SqlServerConnection": "Server=192.168.100.5;initial catalog=test;UID=sa;PWD=xxxx"
  }

在Models文件夹下新建Log.cs

namespace WebAppLog.Models
{
    public class Log
    {
        public int Id { set; get; }
        public string Title { set; get; }
        public string Content { set; get; }
        public DateTime CreateTime { set; get; }
    }
}

创建LogContext.cs文件:

namespace WebAppLog
{
    using Microsoft.EntityFrameworkCore;
    using WebAppLog.Models;

    public class LogContext : DbContext
    {
        public LogContext(DbContextOptions<LogContext> options) : base(options)
        {
        }
        public virtual DbSet<Log> Log { get; set; }
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<Log>().ToTable("logs");
        }
    }
}

修改HomeController.cs文件:

namespace WebAppLog.Controllers
{
    using Microsoft.AspNetCore.Mvc;
    using System.Linq;
    public class HomeController : Controller
    {
        private LogContext context;
     
        public HomeController(LogContext context)
        {
            this.context = context;

        }
        public IActionResult Index()
        {
            var data = context.Log.ToList();
            return View(data);
        }

    }
}

修改Home的Index.cshtml视图:

@{
    var list = Model as List<Log>;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值