首页 > 解决方案 > Asp.Net Core 3.1 MVC 使用代码优先迁移创建 NLog 表模式

问题描述

我将 NLog 用于我的 Asp.Net Core 3.1 Web 应用程序。我正在尝试使用迁移来为日志记录创建表。

我正在尝试转换此脚本:

SET ANSI_NULLS ON
 SET QUOTED_IDENTIFIER ON
 CREATE TABLE [dbo].[Log] (
     [Id] [int] IDENTITY(1,1) NOT NULL,
     [Application] [nvarchar](50) NOT NULL,
     [Logged] [datetime] NOT NULL,
     [Level] [nvarchar](50) NOT NULL,
     [Message] [nvarchar](max) NOT NULL,
     [Logger] [nvarchar](250) NULL,
     [Callsite] [nvarchar](max) NULL,
     [Exception] [nvarchar](max) NULL,
     CONSTRAINT [PK_dbo.Log] 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]

到了一个迁移,但是我不知道如何处理约束部分。我是否需要添加一些代码来解释该约束部分,或者只是去:

add-migration addedLogTable

更新数据库

到目前为止,我已经创建了表模型:

public class Log
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    [Required]
    [MaxLength(50)]
    public string Application { get; set; }

    [Required]
    public DateTime Logged { get; set; }

    [Required]
    [MaxLength(50)]
    public string Level { get; set; }


    [Required]
    [MaxLength]
    public string Message { get; set; }

    [MaxLength(250)]
    public string Logger { get; set; }

    [MaxLength]
    public string Callsite { get; set; }

    [MaxLength]
    public string Exception { get; set; }
}

然后我有数据库上下文类:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
    {
        public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
            : base(options)
        {
        }

        public DbSet<Log> DbLogs { get; set; }

        protected override void OnModelCreating(ModelBuilder builder)
        {
            base.OnModelCreating(builder);
            //builder.Seed();

             foreach(var foreignKey in builder.Model.GetEntityTypes()
                .SelectMany(e=> e.GetForeignKeys()))
             {
                foreignKey.DeleteBehavior = DeleteBehavior.Restrict;
                
             }
        }

    }

我会很感激这方面的帮助。

标签: c#asp.net-coreentity-framework-coreef-code-firstnlog

解决方案


推荐阅读