asp.net mvc CodeFirst 모드 데이터베이스 이전 절차 상세 설명

4789 단어 asp.netmvcCodeFirst
Code First 모드 를 이용 하여 기본 적 인 클래스 를 구축 한 후에 프로젝트 도 구축 이 완료 되 고 성공 적 으로 실행 되 었 으 며 데이터베이스 테이블 구 조 를 자동 으로 생 성 했다.
하지만 저 는 새로운 클래스 가 있 습 니 다.필드 를 수정 해 야 합 니 다.그럼 어떻게 하 죠?라 이브 러 리 삭제,도망 가 시 겠 습 니까?하하.
데이터 베 이 스 를 이용 하여 기 존 구 조 를 바 꾸 지 않 고 새 종 류 를 따로 만 들 거나 기 존 데이터 베이스 시트,필드 를 바 꾸 면 표를 수정 합 니 다.
이전 단계:
1.패키지 관리자 콘 솔 열기:도구->NuGet 패키지 관리자->패키지 관리자 콘 솔.

클릭 후 팝 업 패키지 관리자 콘 솔

가장 주의해 야 할 것 은 기본 항목!!
2.데이터베이스 이전 시작,명령 실행:enable-migrations

Models 가 프로젝트 에 있 는 폴 더 Models 를 직접 이용 하 는 것 이 아니 기 때문에 시작 항목 을 asp.net 뮤 직 비디오 프레임 워 크 형식 으로 선택 하면 오류 가 발생 합 니 다.
현재 프로젝트 의 분포 상황 을 구체 적 으로 살 펴 보 자.

모델 을 분리 해서 시작 항목 으로 SearchEngine 을 기본적으로 선 택 했 을 때 패키지 관리자 콘 솔 에 입력 한 첫 번 째 명령 이 잘못 되 었 습 니 다.

솔 루 션:기본 항목 을 선택 하고 DbContext 가 있 는 항목 을 선택 하 십시오.여 기 는 라 이브 러 리 입 니 다.
성공 조작 은 다음 과 같 습 니 다:

그리고 DbContext 동급 디 렉 터 리 에 migrations 디 렉 터 리 를 추 가 했 습 니 다.

3.데이터베이스 이전 명령 시작
1.Add-migration[사용자 정의 버 전 이름]
add-migrationupdateorderheader 입력

2.update-database
update-database 입력

이 곳 에서 저 와 같이 DbContext 를 따로 분할 하려 면 현재 라 이브 러 리 의 설정 파일 에 데이터베이스 연결 주 소 를 추가 해 야 합 니 다.

asp.net 뮤 직 비디오 프레임 에 있 는 Models 에 직접 추 가 된 DbContext 라면 필요 없 이 웹.config 파일 의 연결 문자열 을 직접 읽 습 니 다.
명령 실행 대기 중...
이상 이 생기다

내 컴퓨터 에 있 는 SQL Server Configuration Manage 를 찾기 시 작 했 습 니 다.있 으 면 열 고 찾 습 니 다.

TCP/IP 프로 토 콜 을 사용 하도록 설정 하면 됩 니 다.
나의 로 컬 에는 이 도구 가 없어 서 아래 와 같은 방식 으로 만 이 곳 을 찾 을 수 있다.
내 컴퓨터 오른쪽 단 추 를 누 르 면->관리->서비스 와 응용 프로그램->SQLServer 설정 관리자(이 도 구 를 두 번 이나 찾 았 지만 찾 지 못 했 습 니 다.모두 여기에서 해결 한 것 같 습 니 다)
명령 을 다시 입력 하고 실행 을 기다 리 십시오.

초보 적 성공
데이터베이스 에 변경 할 필요 가 없 는 표 가 있 기 때 문 입 니 다.
migrations 디 렉 터 리 에서 추가 하거나 수정 해 야 할 구체 적 인 표를 변경 할 수 있 습 니 다.

그 중의 CreateTable/DropTable 을 수정 함으로써 어떤 표 가 변경 되 어야 하 는 지 제어 할 수 있 습 니 다.

namespace SAssassin.EF.Model.Migrations
{
  using System;
  using System.Data.Entity.Migrations;

  public partial class updateorderheader : DbMigration
  {
    public override void Up()
    {
      CreateTable(
        "dbo.MyFileInfoes",
        c => new
        {
          Id = c.Int(nullable: false, identity: true),
          FileName = c.String(),
          FileDescription = c.String(),
          FilePath = c.String(),
          FileType = c.Byte(nullable: false),
          FileSize = c.String(),
          FileStatus = c.Byte(nullable: false),
          IsPublic = c.Byte(nullable: false),
          UserId = c.String(),
          UserName = c.String(),
          CreateDate = c.DateTime(nullable: false),
          LastModityDate = c.DateTime(nullable: false),
        })
        .PrimaryKey(t => t.Id);
    }

    public override void Down()
    {
      DropTable("dbo.MyFileInfoes");
    }
  }
}
4.코드 설정 을 수정 하여 실현 한 후의 조작 은 그리 번 거 롭 지 않다.
migrations 디 렉 터 리 의 Configuration.cs 파일 을 수정 하고 자동 이전 을 엽 니 다.

5.프로젝트 Global.aax 의 ApplicationStart 에 다음 코드 줄 을 추가 합 니 다.

System.Data.Entity.Database.SetInitializer(new System.Data.Entity.MigrateDatabaseToLatestVersion<SAssassin.EF.Model.CodeFirst, SAssassin.EF.Model.Migrations.Configuration>());
여기까지 데이터베이스 이전 작업 이 완료 되 었 습 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기