一步步教大家如何搭建Asp.Net Core2.0网站,以下所有都是建立在.NETCore2.0环境已经搭建好

右键解决方案>新建项目>
选择Web>ASP.NETCoreWeb应用程序(.NET Core)
选择Web应用程序,暂时不选择启用Docker,身份验证选择个人用户账户(会自动生成一系列和用户认证的代码)
随后生代码层次目录如下:
其中会包含身份信息的相关实现,比如相关实体信息(user)之类的,如果想对扩展微软自动的生成的用户实体类,可在Models中的ApplicationUser下扩展,在此ApplicationUser中添加属性即可:比如添加叫WeChatId属性,添加后如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Identity;
namespace DotNetCore20.Web.Models
{
// Add profile data for application users by adding properties to the ApplicationUser class
public class ApplicationUser : IdentityUser
{
/// <summary>
/// 微信Id
/// </summary>
public string WeChatId { get; set; }
}
}
在之后生成运行并迁移,数据库的AspNetUsers中就会多出WeChatId 属性.
一:安装引用
nugnet恢复引用失效时,可在程序包管理控制台输入:
dotnet restore 即可
会发现在恢复指令后在NuGet中会有一个Microsoft.VisualStudio.Web.CodeGeneration.Design的报错,信息如下:
已使用“.NETPortable,Version=v0.0,Profile=Profile259, .NETFramework,Version=v4.6.1”而不是项目目标框架“.NETCoreApp,Version=v2.0”还原了包“Microsoft.Composition 1.0.27”。这可能会导致兼容性问题
这个库是ASP.NET Core的代码生成工具。包含用于生成控制器和视图的dotnet-aspnet-codegenerator命令,暂时可先卸载,不影响项目运行.
对项目类库的引用有以下几种方式
1.Nuget去安装(官网https://www.nuget.org/packages/)
2.右键依赖项点击菜单中的添加引用
3.可在程序包管理控制台输入:Install-Package引用类库名称
4.可右键编辑csproj工程文件进行添加,然后执行dotnet restore
二.创建实体程序集
右键解决方案>添加项目>
首先创建抽象类,供Entity实体继承,主要为每个实体提供公用属性
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Runtime.Serialization;
using System.Text;
namespace DotNetCore20.Entity.Core
{
/// <summary>
/// DB表基底
/// </summary>
[Serializable]
public abstract partial class BaseEntity
{
/// <summary>
/// Id
/// </summary>
[DataMember]
public long Id { get; set; }
/// <summary>
/// DB 資料版號
/// </summary>
1771379211
public byte[] RowVersion { get; set; }
/// <summary>
/// 创建时间
/// </summary>
[DataMember]
public DateTime CreateTime { get; set; }
/// <summary>
/// 更新时间
/// </summary>
[DataMember]
public DateTime UpdateTime { get; set; }
/// <summary>
/// 状态
/// </summary>
[DataMember]
public EnumState State { get; set; }
}
/// <summary>
/// 状态
/// </summary>
public enum EnumState
{
/// <summary>
/// 删除
/// </summary>
Delete = 1,
/// <summary>
/// 正常
/// </summary>
Normal = 0,
}
}
添加一个UserExtend用户扩展类(Entity):
using DotNetCore20.Entity.Core;
using System;
using System.Runtime.Serialization;
namespace DotNetCore20.Entity
{
[DataContract]
public class UserExtend : BaseEntity
{
/// <summary>
/// 用户Id
/// </summary>
[DataMember]
public long UserId { get; set; }
/// <summary>
/// 昵称
/// </summary>
[DataMember]
public long NickName { get; set; }
}
}
三.创建数据层
添加引用
DAL层需要用到EF实体映射相关和我们自己前面定义的Entity中的UserExtend实体表,所以要添加相关引用,DotNetCore20.Entity和 Microsoft.EntityFrameworkCore.Tools
快捷键:Ctrl+Alt+o 打开程序包管理器输入以下:
install-package Microsoft.EntityFrameworkCore.Tools
如果是网络限制下载失败,推荐把nuget镜像改为博客园资源,方法如下:
右键解决方案>管理解决方案的nuget程序包.显示如下:
新建一个数据上下文类,目录结构如下:
DotNetCoreDbContext内部代码改为以下:
using DotNetCore20.Entity;
using Microsoft.EntityFrameworkCore;
namespace DotNetCore20.DAL.DbContext
{
public class DotNetCoreDbContext : Microsoft.EntityFrameworkCore.DbContext
{
public DotNetCoreDbContext(DbContextOptions<DotNetCoreDbContext> options) : base(options)
{
}
public DbSet<UserExtend> UserExtend { get; set; }
}
}
在此基本的实体映射相关的代码都完毕,现在还有一步,就是数据库连接字符串的配置
首先打开appsettings.json文件,在ConnectionStrings节点下增加以下
复制代码 代码如下:"DotNetCoreConnection": "Server=(localdb)\\mssqllocaldb;Database=DotNetCoreDb;Trusted_Connection=True;MultipleActiveResultSets=true"
增加后如下:
{
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=DotNetCoreDefaultDb;Trusted_Connection=True;MultipleActiveResultSets=true",
"DotNetCoreConnection": "Server=(localdb)\\mssqllocaldb;Database=DotNetCoreDb;Trusted_Connection=True;MultipleActiveResultSets=true"
},
"Logging": {
"IncludeScopes": false,
"Debug": {
"LogLevel": {
"Default": "Warning"
}
},
"Console": {
"LogLevel": {
"Default": "Warning"
}
}
}
}
再打开web网站下的Startup文件,在ConfigureServices方法中添加一下行:
//自定义数据库连接字符串
services.AddDbContext<DotNetCoreDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DotNetCoreConnection")));
增加后如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Http;
using Microsoft.EntityFrameworkCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using DotNetCore20.Web.Data;
using DotNetCore20.Web.Models;
using DotNetCore20.Web.Services;
using DotNetCore20.DAL.DbContext;
namespace DotNetCore20.Web
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
//自定义数据库连接字符串
services.AddDbContext<DotNetCoreDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DotNetCoreConnection")));
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
// Add application services.
services.AddTransient<IEmailSender, AuthMessageSender>();
services.AddTransient<ISmsSender, AuthMessageSender>();
services.AddMvc();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseBrowserLink();
app.UseDatabaseErrorPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
app.UseAuthentication();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
}
}
运行程序,点击登陆(只要访问数据库的操作都可),出现错误页面:
点击应用迁移,即自动迁移数据库.
由于两个数据库,只会自动迁移关于用户的表AspNetUsers,
所以还得VS中程序包管理器中下命令迁移.
Add-Migration firstMigration -Context DotNetCoreDbContext
以上命令执行后再执行以下命令:
Update-Database -ContextDotNetCoreDbContext;
然后查看数据库会发现多出两个数据库,
以DotNetCoreDefaultDb生成的为例,会生成如下表:
其中AspNetUsers就中会有之前添加的WeChatId字段
然后再次运行程序:
这样一个完整的Asp.NetCore2.0网站就初步运行起来了
下一篇将在DAL层增加Repository和UnitWorks,完成简单crud的统一管理
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# CodeFirst
# Asp.Net
# Core2.0
# EF使用Code First模式生成单数形式表名
# EF使用Code First模式给实体类添加复合主键
# 使用EF的Code First模式操作数据库
# C#笔记之EF Code First 数据模型 数据迁移
# asp.net mvc CodeFirst模式数据库迁移步骤详解
# 使用EF Code First搭建简易ASP.NET MVC网站并允许
# 右键
# 可在
# 程序包
# 在此
# 自定义
# 管理器
# 多出
# 中会
# 应用程序
# 都是
# 类库
# 就会
# 会有
# 更新时间
# 将在
# 只会
# 微软
# 这样一个
# 几种
# 还得
相关文章:
C#如何在一个XML文件中查找并替换文本内容
免费公司网站制作软件,如何申请免费主页空间做自己的网站?
网站app免费制作软件,能免费看各大网站视频的手机app?
网站制作价目表怎么做,珍爱网婚介费用多少?
广州商城建站系统开发成本与周期如何控制?
SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
英语简历制作免费网站推荐,如何将简历翻译成英文?
小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
中山网站制作网页,中山新生登记系统登记流程?
c++ stringstream用法详解_c++字符串与数字转换利器
如何解决VPS建站LNMP环境配置常见问题?
官网建站费用明细查询_企业建站套餐价格及收费标准指南
如何零成本快速生成个人自助网站?
建站之星北京办公室:智能建站系统与小程序生成方案解析
*服务器网站为何频现安全漏洞?
建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南
网站制作费用多少钱,一个网站的运营,需要哪些费用?
早安海报制作网站推荐大全,企业早安海报怎么每天更换?
如何快速生成凡客建站的专业级图册?
娃派WAP自助建站:免费模板+移动优化,快速打造专业网站
如何实现建站之星域名转发设置?
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
建站之星备案是否影响网站上线时间?
已有域名如何快速搭建专属网站?
制作国外网站的软件,国外有哪些比较优质的网站推荐?
如何用西部建站助手快速创建专业网站?
如何高效完成自助建站业务培训?
ppt制作免费网站有哪些,ppt模板免费下载网站?
如何零基础开发自助建站系统?完整教程解析
免费网站制作appp,免费制作app哪个平台好?
建站之星图片链接生成指南:自助建站与智能设计教程
已有域名和空间,如何快速搭建网站?
建站之星与建站宝盒如何选择最佳方案?
如何零基础在云服务器搭建WordPress站点?
建站上市公司网站建设方案与SEO优化服务定制指南
黑客如何利用漏洞与弱口令入侵网站服务器?
公司门户网站制作流程,华为官网怎么做?
,巨量百应是干嘛的?
深入理解Android中的xmlns:tools属性
如何制作算命网站,怎么注册算命网站?
再谈Python中的字符串与字符编码(推荐)
如何选择高效稳定的ISP建站解决方案?
定制建站价位费用解析与套餐推荐全攻略
公司网站制作需要多少钱,找人做公司网站需要多少钱?
如何在Windows虚拟主机上快速搭建网站?
上海网站制作开发公司,上海买房比较好的网站有哪些?
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
宝塔建站无法访问?如何排查配置与端口问题?
*请认真填写需求信息,我们会在24小时内与您取得联系。