zoukankan      html  css  js  c++  java
  • 创建NetCore2.2 Web项目+EFCore+SQLServer

    在空余时间学习下NetCore,记录日常,供参考。

    1.确保已下载安装NetCore2.2SDK 环境,下载地址:https://dotnet.microsoft.com/download/dotnet-core/2.2

    2.打开VS2017,首先新建一个解决方案,并在解决方案上新建项目操作,选择ASP.NET Core Web 应用程序,点击“确定”。继续,NetCore版本选择ASP.NET Core 2.2,类型选择“Web应用程序”点击确定。

    3、在appsettings.json添加配置数据库链接字符串,添加后如下图

    {
      "Logging": {
        "IncludeScopes": false,
        "LogLevel": {
          "Default": "Warning"
        }
      },
      "AllowedHosts": "*",
    "ConnectionStrings": { "DefaultConnectionString": "Data Source=.;Initial Catalog=bcmf_core;User ID=sa;Password=123456" } }

     4.NetCore2.2的SDK正常包含有Microsoft.EntityFrameworkCore和microsoft.EntityFrameworkCore.SqlServer,若没有,可以在NuGet包中查询安装,这里也是安装的2.2版本

    NuGet官网:https://www.nuget.org/

    搜索以上两个引用名称,获取安装命令行,在VS2017的程序包管理器控制台输入对应命令行,如下:

    5.在Models文件夹新建文件夹“Entity”,在Entity下存放我们的数据实体类,新建实体类User.cs,这里视个人情况而定,我选择的是以前项目的一个测试数据库。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    
    namespace NetCoreCMS.Models.Entity
    {
        public class User
        {
            public int UserId { get; set; }
            public int PermissionId { get; set; }
            public int RoleId { get; set; }
            public string Name { get; set; }
            public string NameCN { get; set; }
            public string Email { get; set; }
            public string Password { get; set; }
            public bool IsSystem { get; set; }
            public bool IsActive { get; set; }
        }
      
        /// <summary>
        /// 返回模型类
        /// </summary>
      public class UserViewModel
        {
            public int UserId { get; set; }
            public int PermissionId { get; set; }
            public int RoleId { get; set; }
            public string Name { get; set; }
            public string NameCN { get; set; }
            public string Email { get; set; }
            public string IsSystem { get; set; }
            public string IsActive { get; set; }
        }
    }

    5、在Models文件夹新建文件夹“Mapping”,在Mapping下存放我们的数据实体映射类,新建实体类UserMapping.cs,

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    using CMSCore.Web.Models.Entity;
    using Microsoft.EntityFrameworkCore;
    using Microsoft.EntityFrameworkCore.Metadata.Builders;
    
    namespace CMSCore.Web.Models.Mapping
    {
        public class UserMapping : IEntityTypeConfiguration<User>
        {
            void IEntityTypeConfiguration<User>.Configure(EntityTypeBuilder<User> builder)
            {
                builder.ToTable("User");//对应数据库User表
                builder.HasKey("UserId");
                builder.Property(t => t.PermissionId).HasColumnName("PermissionId").IsRequired();
                builder.Property(t => t.RoleId).HasColumnName("RoleId").IsRequired();
                builder.Property(t => t.Name).HasColumnName("Name").IsRequired().HasMaxLength(50);
                builder.Property(t => t.NameCN).HasColumnName("NameCN").IsRequired().HasMaxLength(50);
                builder.Property(t => t.Email).HasColumnName("Email").IsRequired().HasMaxLength(50);
                builder.Property(t => t.Password).HasColumnName("Password").IsRequired();
                builder.Property(t => t.IsSystem).HasColumnName("IsSystem").IsRequired();
                builder.Property(t => t.IsActive).HasColumnName("IsActive").IsRequired();
            }
        }
    }

    6、在Models文件夹新建上下文BcmfContext.cs类

    using CMSCore.Web.Models.Entity;
    using CMSCore.Web.Models.Mapping;
    using Microsoft.EntityFrameworkCore;
    
    namespace CMSCore.Web.Models
    {
        public class BcmfDBContext : DbContext
        {
            public BcmfDBContext(DbContextOptions options) : base(options)
            {
            }
         
            public DbSet<User> User { get; set; }
    protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.ApplyConfiguration(new UserMapping()); base.OnModelCreating(modelBuilder); } } }

    7、在入口文件注册上下文,在根目录Startup.cs的ConfigureServices方法中,注册上下文。

    不要忘记了添加引用命名空间
    using Microsoft.EntityFrameworkCore;
    using Microsoft.EntityFrameworkCore.SqlServer;

     // This method gets called by the runtime. Use this method to add services to the container.
            public void ConfigureServices(IServiceCollection services)
            {
                services.Configure<CookiePolicyOptions>(options =>
                {
                    // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                    options.CheckConsentNeeded = context => true;
                    options.MinimumSameSitePolicy = SameSiteMode.None;
                });
    
                services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
                //注册数据库操作上下文
                services.AddDbContext<BcmfDBContext>(option => option.UseSqlServer(Configuration.GetConnectionString("DefaultConnectionString")));
            }

    8、在Controller文件夹下,创建控制器UserController.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    using CMSCore.Web.Models;
    using CMSCore.Web.Models.Entity;
    using Microsoft.AspNetCore.Mvc;
    
    // For more information on enabling MVC for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
    
    namespace CMSCore.Web.Controllers
    {
        public class UserController : Controller
        {
            private readonly BcmfDBContext db;
    
            public UserController(BcmfDBContext _db)
            {
                db = _db;
            }
    
            // GET: /<controller>/
            public IActionResult Index()
            {
                var userList = db.User.Where(m => m.IsActive).Select(t => new UserViewModel
                {
                    Email = t.Email,
                    IsActive = t.IsActive ? "激活" : "禁用",
                    IsSystem = t.IsSystem ? "" : "",
                    Name = t.Name,
                    NameCN = t.NameCN,
                    PermissionId = t.PermissionId,
                    RoleId = t.RoleId,
                    UserId = t.UserId
                });
                return Json(userList);
            }
        }
    }

    运行、访问/user/index,成功获取用户信息

  • 相关阅读:
    spring boot @value 使用
    mac Navicat premium 链接oracle
    List sort 排序
    mac 配置jdk+maven环境变量
    mybatis 根据主键批量insert或update
    git 常用命令
    SpringBoot整合Activiti案例
    Activiti网关-并行网关
    Activiti网关-包含网关
    Activiti网关-排他网关
  • 原文地址:https://www.cnblogs.com/luckypc/p/10790924.html
Copyright © 2011-2022 走看看