EntityFramework 7 프로젝트에 마이그레이션을 추가하는 방법

asp.net-core code-first-migrations entity-framework entity-framework-core

문제

나는 asp.net 5와 EF 7 VS2015를 사용하는 새로운 프로젝트를 시작하고있다.

사용자 관리로 프로젝트 템플릿을 선택했습니다. 이제 일부 클래스를 dbContext에 추가하고 새 클래스로 새 스키마를 만들려고합니다.

내 ApplicationDbContext는 다음과 같습니다.

    public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public DbSet<Candidate> Candidates { get; set; }
    public DbSet<Manager> Managers { get; set; }

    protected override void OnModelCreating(ModelBuilder builder)
    {
        base.OnModelCreating(builder);
        // Customize the ASP.NET Identity model and override the defaults if needed.
        // For example, you can rename the ASP.NET Identity table names and more.
        // Add your customizations after calling base.OnModelCreating(builder);
        builder.Entity<Candidate>().Key(x => x.Id);
        builder.Entity<Manager>().Key(x => x.Id);
    }
}

내 데이터베이스를 내 CandidatesManagers 테이블과 함께 버전으로 다시 만들거나 마이그레이션 할 수 없었습니다.

어떤 명령을 내 DB를 표시 할 위치를 입력해야합니까? 내 친구 인 Google과 Bing이 모든면에서 나를 지적했지만, 내가 찾은 것들 중 어느 것도 효과가 없었다.

수락 된 답변

다음과 같이 새로운 dnx 명령을 사용해야합니다.

dnx . ef migration add NameOfMigration

마이그레이션을 실행하려면 다음을 수행하십시오.

dnx . ef migration add NameOfMigration

인기 답변

ASP.NET 5 및 Entity 7 RC1에 따라 다음과 같은 단계가 수행됩니다.

  1. 주 프로젝트의 Entity Commands nuget 패키지에 종속성을 추가하십시오. 그래서 당신의 project.json 에서이 종속성 "EntityFramework.Commands": "7.0.0-rc1-final" 를보아야합니다 "EntityFramework.Commands": "7.0.0-rc1-final"
  2. 나중에 콘솔에서 사용할 별명 명령을 추가하십시오. 따라서 project.json 에서 다음과 같은 ef 명령을 사용해야합니다. "commands": { "ef": "EntityFramework.Commands", "web": "Microsoft.AspNet.Server.Kestrel" }
  3. 콘솔을 열고 이주 명령을 실행하십시오. 예 :

    D:\Projects\MyProject\src\MyProject.Web.Api>dnx ef migrations add Initial --targetProject MyProject.Data.SqlServer

  4. 그런 다음 ef 가 프로젝트에서 생성하는 마이그레이션을 검토하고 다음 명령을 사용하여 데이터베이스 (프로젝트에 구성된 데이터베이스)에 변경 사항을 적용합니다.

    D:\Projects\MyProject\src\MyProject.Web.Api>dnx ef database update

--targetProject 특성을 사용하면 DbContext가있는 위치와 마이그레이션 폴더를 만들 위치를 지정할 수 있습니다. DbContext가 주 프로젝트에 있다면 이것을 생략 할 수 있습니다 (그러나이 명령은 편리 할 수 ​​있도록 모든 지속성 관련 클래스 라이브러리 프로젝트를 갖도록 권장합니다)

Startup.cs 에는 일반적으로 연결 문자열을 포함하여 Entity에 대한 구성이 있습니다. 이것은 기본적인 예입니다.

public Startup(IHostingEnvironment env)
    {
        // Set up configuration sources.
        var builder = new ConfigurationBuilder()
            .AddJsonFile("appsettings.json")
            .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
            .AddEnvironmentVariables();
        Configuration = builder.Build();
        builder.AddEnvironmentVariables();
        Configuration = builder.Build();
    }

    public IConfigurationRoot Configuration { get; private set; }

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        // Add framework services.
        services.AddEntityFramework()
            .AddSqlServer()
            .AddDbContext<KuneDbContext>(options => {
                options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]);
            });

        // Add identity here http://docs.asp.net/en/latest/tutorials/your-first-aspnet-application.html

        services.AddMvc();

        // Add application services
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        loggerFactory.AddConsole(Configuration.GetSection("Logging"));
        loggerFactory.AddDebug();

        if (env.IsDevelopment())
        {
            app.UseBrowserLink();
            app.UseDeveloperExceptionPage();
            app.UseDatabaseErrorPage();
        }
        else
        {
            app.UseExceptionHandler("/Home/Error");

            // For more details on creating database during deployment see http://go.microsoft.com/fwlink/?LinkID=615859
            try
            {
                using (var serviceScope = app.ApplicationServices.GetRequiredService<IServiceScopeFactory>()
                    .CreateScope())
                {
                    serviceScope.ServiceProvider.GetService<KuneDbContext>()
                         .Database.Migrate();
                }
            }
            catch { }
        }

        app.UseIISPlatformHandler();

        app.UseStaticFiles();
        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
        });

        //Seed Data if you want to load some test data in the DB
        //SeedData.Initialize(app.ApplicationServices);
    }

    // Entry point for the application.
    public static void Main(string[] args) => WebApplication.Run<Startup>(args);
}



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.