搜索
您的当前位置:首页正文

ASP.NET Core使用EFCore

来源:好走旅游网

1、使用首先需要安装以下几个包,直接Nuget

2、配置连接字符串,这里使用的加密算法来配置appsettings.json连接字符串

这里需要注意,填充的一定是你的连接字符串加密数据,而不是我的加密串,别混淆

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "ConnectionStrings": {
    /***********数据库加密字符串***********/
    "DBContext": "sv4VvFJ8Q9DjT1pYTb3s5cftFxB5OkExc4EozwQBqqb+cjiIgKATHdlSmGl4s6w+/QLssVzhOGtOXGQKNxjbNoQCv6O7VaLK46a9L9hRQ7iUFJwrios/iK6D/J6xfxdzs0M2ADnBYqMpOSp88m6bobD7qNstEWnxQ8nYvek="
  }
}

3、在Web层ASP.NET Core项目的Startup.cs启动类的ConfigureServices方法中进行注入

        /// <summary>
        /// 此方法由运行时调用,使用此方法可将服务添加到容器中
        /// </summary>
        public void ConfigureServices(IServiceCollection services)
        {           
            //解密数据库的加密连接字符串
            string DBContext = AESKeyEncrypt.DecryptKey(Configuration.GetConnectionString("DBContext"));
            services.AddDbContext<SNKContext>(options => options.UseSqlServer(DBContext));//EFCore注入

            //注入自启动
            services.AddControllersWithViews().AddRazorRuntimeCompilation();
        }

4、到此呢,整个EFCore注入已经完成,可能你会有疑问,好像还什么都没干呢?对,确实好像什么都还没干,但我接下来说的,会让你觉得EFCore的配置,其实已经做完了。

(1)、该命令表示首次创建

Scaffold-DbContext "server=.;database=database;uid=sa;password=123456;Trusted_Connection=false;MultipleActiveResultSets=true;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir SNKModel

(2)、当已经创建过模型,数据库又新增数据表模型,使用-force命令进行更新

Scaffold-DbContext "server=.;database=database;uid=sa;password=123456;Trusted_Connection=false;MultipleActiveResultSets=true;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir SNKModel -force

5、执行命令后,自动生成模型,如图(类似):

这些均是应用程序根据连接字符串的数据库表自动生成的,对,你没有眼花,更没有看错,就是这么神奇,上图的每个类对应你的数据库每一张表,也就是说,只要你的连接字符串配置正确,输入一下命令以后,即可自动生成。怎么样,是不是相当nice!下面让你感受一下它的强大,它会根据你的外键、日期、以及Not Nulll等属性生成完全配置好的数据模型,以下是我数据库模型生成的关联属性:

modelBuilder.Entity<Depart>(entity =>
            {
                entity.Property(e => e.Id).HasMaxLength(200);

                entity.Property(e => e.DepartName).HasMaxLength(200);

                entity.Property(e => e.SorTime).HasColumnType("datetime");
            });

            modelBuilder.Entity<Exc>(entity =>
            {
                entity.Property(e => e.Id).HasMaxLength(200);

                entity.Property(e => e.Data).HasMaxLength(500);

                entity.Property(e => e.HelpLink).HasMaxLength(500);

                entity.Property(e => e.Ip).HasMaxLength(200);

                entity.Property(e => e.Message).HasMaxLength(500);

                entity.Property(e => e.SorTime).HasColumnType("datetime");

                entity.Property(e => e.Source).HasMaxLength(500);

                entity.Property(e => e.StrackTrace).HasColumnType("text");

                entity.Property(e => e.TargetSite).HasMaxLength(500);
            });

            modelBuilder.Entity<Log>(entity =>
            {
                entity.Property(e => e.Id).HasMaxLength(200);

                entity.Property(e => e.Ip).HasMaxLength(200);

                entity.Property(e => e.SorTime).HasColumnType("datetime");

                entity.Property(e => e.Url).HasMaxLength(200);

                entity.Property(e => e.Userid).HasMaxLength(200);

                entity.HasOne(d => d.User)
                    .WithMany(p => p.Log)
                    .HasForeignKey(d => d.Userid)
                    .HasConstraintName("FK_SNK_Log_SNK_User");
            });

            modelBuilder.Entity<Menu>(entity =>
            {
                entity.Property(e => e.Id)
                    .HasMaxLength(200)
                    .HasComment("主键");

                entity.Property(e => e.Icon)
                    .HasMaxLength(200)
                    .HasComment("小图标");

                entity.Property(e => e.IsOpen).HasComment("展开标识");

                entity.Property(e => e.ParentId)
                    .HasMaxLength(200)
                    .HasComment("父节点");

                entity.Property(e => e.SorTime)
                    .HasColumnType("datetime")
                    .HasComment("排序时间");

                entity.Property(e => e.TabId).ValueGeneratedOnAdd();

                entity.Property(e => e.Title)
                    .HasMaxLength(200)
                    .HasComment("菜单名称");

                entity.Property(e => e.Url)
                    .HasMaxLength(200)
                    .HasComment("url");

                entity.HasOne(d => d.Parent)
                    .WithMany(p => p.InverseParent)
                    .HasForeignKey(d => d.ParentId)
                    .HasConstraintName("FK_SNK_Menu_SNK_Menu");
            });

            modelBuilder.Entity<Rights>(entity =>
            {
                entity.Property(e => e.Id).HasMaxLength(200);

                entity.Property(e => e.MenuId)
                    .IsRequired()
                    .HasMaxLength(200);

                entity.Property(e => e.RoleId).HasMaxLength(200);

                entity.HasOne(d => d.Menu)
                    .WithMany(p => p.Rights)
                    .HasForeignKey(d => d.MenuId)
                    .OnDelete(DeleteBehavior.ClientSetNull)
                    .HasConstraintName("FK_SNK_Right_SNK_Menu");

                entity.HasOne(d => d.Role)
                    .WithMany(p => p.Rights)
                    .HasForeignKey(d => d.RoleId)
                    .HasConstraintName("FK_SNK_Right_SNK_Role");
            });

            modelBuilder.Entity<Role>(entity =>
            {
                entity.Property(e => e.Id).HasMaxLength(200);

                entity.Property(e => e.RoleName).HasMaxLength(200);

                entity.Property(e => e.SorTime).HasColumnType("datetime");
            });

            modelBuilder.Entity<Urole>(entity =>
            {
                entity.ToTable("URole");

                entity.Property(e => e.Id).HasMaxLength(200);

                entity.Property(e => e.RoleId).HasMaxLength(200);

                entity.Property(e => e.UserId).HasMaxLength(200);

                entity.HasOne(d => d.Role)
                    .WithMany(p => p.Urole)
                    .HasForeignKey(d => d.RoleId)
                    .HasConstraintName("FK__SNK_UR__rid__17F790F9");

                entity.HasOne(d => d.User)
                    .WithMany(p => p.Urole)
                    .HasForeignKey(d => d.UserId)
                    .HasConstraintName("FK__SNK_UR__uid__17036CC0");
            });

            modelBuilder.Entity<Users>(entity =>
            {
                entity.Property(e => e.Id).HasMaxLength(200);

                entity.Property(e => e.Account).HasMaxLength(200);

                entity.Property(e => e.Email).HasMaxLength(200);

                entity.Property(e => e.Image).HasMaxLength(200);

                entity.Property(e => e.Password).HasMaxLength(200);

                entity.Property(e => e.Phone).HasMaxLength(200);

                entity.Property(e => e.Sex).HasMaxLength(10);

                entity.Property(e => e.SorTime).HasColumnType("datetime");

                entity.Property(e => e.TrueName).HasMaxLength(200);
            });

你也赶快去试试吧,时间总是不等人的唷!

因篇幅问题不能全部显示,请点此查看更多更全内容

Top