CodeFirst 는 0 부터 Asp.Net Core 2.0 사 이 트 를 구축 합 니 다.
해결 방안 을 오른쪽 클릭>새 항목>
웹>ASP.NET Core 웹 프로그램(.NET Core)선택
웹 프로그램 을 선택 하 십시오.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 속성 이 많아 집 니 다.1:설치 참조
nugnet 참조 가 실 효 될 때 패키지 관리 콘 솔 에 입력 할 수 있 습 니 다:
dotnet 복원 하면 됩 니 다.
복구 명령 후 NuGet 에서 Microsoft.VisualStudio.Web.Code Generation.Design 의 오류 가 발생 할 수 있 습 니 다.정 보 는 다음 과 같 습 니 다.
프로젝트 대상 프레임 워 크 가 아 닌'NETPortable,Version=v 0.0,Profile=Profile 259,.NETFramework,Version=v 4.6.1'을 사 용 했 습 니 다.'NETCoreApp,Version=v 2.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 를 실행 할 수 있 습 니 다.
2.실체 프로그램 집합 만 들 기
솔 루 션 오른쪽 단추>항목 추가>
먼저 추상 클래스 를 만 들 고 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 Y
/// </summary>
[Timestamp]
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; }
}
}
3.데이터 계층 만 들 기인용 추가
DAL 층 은 EF 실체 맵 과 우리 가 앞에서 정의 한 Entity 의 UserExtend 실체 표를 사용 해 야 하기 때문에 관련 인용,DotNetCore 20.Entity 와 Microsoft.EntityFramework Core.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; }
}
}
이 기본 실체 맵 과 관련 된 코드 가 모두 끝 났 습 니 다.지금 은 데이터베이스 연결 문자열 의 설정 이 있 습 니 다.먼저 apptsettings.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"
}
}
}
}
웹 사이트 의 Startup 파일 을 열 고 Configure Services 방법 에 줄 을 추가 합 니 다.
//
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.NetCore 2.0 사이트 가 초보 적 으로 운행 되 기 시작 했다.
다음 편 은 DAL 층 에 Repository 와 UnitWorks 를 추가 하여 간단 한 crud 통합 관 리 를 완성 합 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Visual Studio 2017 ASP.화면을 처음 만들어 봤어요.지난번에 나는 활동적인 프로젝트를 하나 했기 때문에 그 항목에 보기를 추가할 것이다. 모형도 0부터 제작한다.DB는 참조 시스템의 화면 이미지에 포함되지 않습니다.코드 우선 항목이라도 전체 화면은 의존 대상을 영구화...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.