2017-10-05 12 views
0

저는 엔티티 프레임 워크, 비주얼 스튜디오 및 .net을 처음 사용합니다. db 테이블에 대한 모델을 만들었습니다 (코드 첫 번째 규칙 사용). 내가 마이 그 레이션을 실행하고 테이블을 업데이 트가 잘 작동 내가 테이블에 엔티티를 삽입하고 있지만 언젠가 내 테이블과 테이블 데이터가 사라집니다. 테이블을 다시 생성하려면 update-database 명령을 실행해야합니다. db 테이블이 사라지는 이유는 무엇입니까? 마이그레이션 스크립트의 존재가 여기 내 코드가 나의 packages.config 파일 문맥 클래스 여기db 테이블이 코드에서 자동으로 사라집니다. 첫 번째 엔티티 프레임 워크

public class LMSDBContext : IdentityDbContext<ApplicationUser, CustomRole, int, CustomUserLogin, CustomUserRole, CustomUserClaim> 
{ 
    public LMSDBContext() 
     : base("LMSDBContext") 
    { 



     Database.SetInitializer(new DropCreateDatabaseAlways<LMSDBContext>()); 

    Database.SetInitializer<LMSDBContext>(new MigrateDatabaseToLatestVersion<LMSDBContext, Migrations.Configuration("LMSDBContext")); 

     this.Configuration.LazyLoadingEnabled = true; 
    } 
    } 

내 LMSSeedData 클래스 여기

public class LMSSeedData : DropCreateDatabaseAlways<LMSDBContext> 
{ 
    protected override void Seed(LMSDBContext context) 
    { 

     base.Seed(context); 
    } 
} 

<packages> 
<package id="Edi.Web.MvcExtensions" version="5.2.3.1" 
targetFramework="net461" /> 
<package id="EntityFramework" version="6.2.0-beta1" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.Identity.Core" version="2.2.1" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.Identity.EntityFramework" version="2.2.1" targetFramework="net45" /> 
<package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net461" /> 
<package id="Microsoft.AspNet.Razor" version="3.2.3" targetFramework="net461" /> 
    <package id="Microsoft.AspNet.WebPages" version="3.2.3" targetFramework="net461" /> 
    <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net461" /> 
</packages> 

답변

0

당신은 당신의 DbContext를 표시 할 수 있습니다 클래스와 매핑 클래스? 우리는 그것들 없이는 추측 할 수 있습니다.

는 모든 데이터베이스 씨 뿌리는 다음과 같이해야합니까 :

public class DbInitializer : DropCreateDatabaseAlways<YourContextName> 
{ 
    protected override void Seed(YourContextName context) 
    { 
     // seed database here 
     ...... 
    } 
} 

그 이니셜이 실행될 때마다 삭제하고 데이터베이스와 테이블을 재 작성합니다.

현재 데이터베이스 초기화 전략에 대한 자세한 내용을보실 수 있습니다 : 데이터베이스 및 테이블을 재 작성하지 않으려면 http://www.entityframeworktutorial.net/code-first/database-initialization-strategy-in-code-first.aspx

대신 DropCreateDatabaseIfModelChanges를 사용하려고합니다.

코드를 게시하지 않았으므로 클래스와 설정이 어떤 모양인지 알 수 없습니다.

+0

ys 나는이 2 개의 클래스를 가지고있다. – Asad

+0

나는 데이터베이스가 사라지는 것을 생각하지 않지만, 적절한 답을주기 위해 설명이 모호하다. –

+0

내가 만든 두 테이블이 무작위로 사라져서 데이터베이스를 계속해서 업데이트해야합니다. 너 좀 도와 줄 수있어? @GertArnold – Asad