EF7을 사용하고 ASP.NET 5 Beta 8 콘솔 응용 프로그램에서 startup.cs없이 SQL Server에 연결하는 방법은 무엇입니까?

asp.net-core asp.net-core-mvc c# entity-framework-core

문제

문제

내가 asp.net 5 콘솔 샘플 응용 프로그램을 작성하고 내 백엔드 얘기하는 엔터티 프레임 워크 7을 사용하고 싶습니다. 웹 응용 프로그램에서이 작업을 수행하는 방법을 알고 있지만 startup.cs 사용하지 않고 main.cs 사용할 때 콘솔 응용 프로그램에서이 작업을 수행하는 방법이 손실됩니다.

암호

웹 응용 프로그램에서 startup.cs 다음 코드가 있습니다.

public void ConfigureServices(IServiceCollection services)
{
    var connection = @"Server=(localdb)\mssqllocaldb;Database=EFGetStarted.AspNet5;Trusted_Connection=True;";

    services.AddEntityFramework()
            .AddSqlServer()
            .AddDbContext<BloggingContext>(options => options.UseSqlServer(connection));
}

여기서 entityframework7 및 SQL Server를 사용하는 연결 문자열에 대해 구성된 서비스가 있습니다.

시도

GitHub, Google 및 Bing을 살펴 보았지만 EF7을 사용하여 샘플 프로젝트와 웹 응용 프로그램 용 코드 만 찾았습니다. 콘솔 응용 프로그램과 EF7에 대해 설명하는 설명서를 찾지 못했습니다.

위의 코드를 작성하고 main.cs 내 콘솔 응용 프로그램의 main.cs 에 있습니다. main.cs에서 분명히 다음과 같이 성공하지 못했습니다.

public void ConfigureServices(IServiceCollection services)
{
    var connection = @"Server=(localdb)\mssqllocaldb;Database=EFGetStarted.AspNet5;Trusted_Connection=True;";

    services.AddEntityFramework()
            .AddSqlServer()
            .AddDbContext<BloggingContext>(options => options.UseSqlServer(connection));
}

내 프로그램에 연결 문자열이 무엇인지 알릴 방법이 없으며 main.cs 에서 컨텍스트를 인스턴스화하는 올바른 방법 main.cs 하다.

이 흥미로운 문제에 대한 도움, 조언 또는 의견을 보내 주시면 감사하겠습니다. 고맙습니다.

수락 된 답변

heavyd가 말했듯이 그 대부분은 필요하지 않으며 단지 DI를 설정하기위한 것입니다. 코드를 읽는 방법이 잘못되었을 수도 있습니다.

연결 문자열을 설정하는 방법은 간단합니다.

var connection = @"Server=(localdb)\mssqllocaldb;Database=EFGetStarted.AspNet5;Trusted_Connection=True;";

SampleConsoleDbContext scab = new SampleConsoleDbContext(connection);

컨텍스트에 연결 문자열을 전달하십시오.

당신은 당신이 원하는만큼 추상화 할 수 있지만 이것은 컨텍스트의 인스턴스에 연결 문자열을 전달하는 방법입니다.


인기 답변

Microsoft는 실제로 Entity Framework 7에 대한 설명서작성 하기 시작했습니다.

샘플에서 OnConfiguring 메서드를 재정 의하여 컨텍스트의 구성을 수행 할 수 있습니다.

public class BloggingContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder builder)
    {
        builder.UseSqlServer(@"<connection string>");
    }
}

그런 다음 Main에 컨텍스트의 인스턴스를 만들 수 있습니다.

public class BloggingContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder builder)
    {
        builder.UseSqlServer(@"<connection string>");
    }
}

ASP.NET 예제에서 .AddEntityFramework() 호출하면 나머지 ASP.NET과 마찬가지로 EF가 동일한 서비스 공급자 (의존성 주입)를 사용할 수 있습니다. 즉, EF는 ASP와 동일한 로거를 가져옵니다. NET을 사용하고 있습니다). 그러나 그 패턴을 따르고 싶지 않다면 위의 방법을 사용할 수 있습니다.




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