vNext 프로젝트를 시작하고 있는데 문제가 발생합니다. ApplicationDbContext
클래스에 테이블을 추가하고 db (이 경우 Azure에 있음) 테이블을 성공적으로 만들었습니다. 그러나 올바르게 컨트롤러에서 사용할 dbContext
인스턴스를 만들 수 없습니다.ASP.NET vNext EF7 dbContext 문제
이전 ASP.NET EF 프로젝트에서 사용한 경험에 따르면 매개 변수를 전달하지 않고도 ApplicationDbContext 클래스를 인스턴스화 할 수 있었지만 vNext의 경우에는 여러 가지가 예상됩니다 (IServiceProvider
및 IOptionsAccessor<DbContextOptions>
). 매개 변수가없는 생성자를 만들려고 시도했지만 App은 사용할 연결 문자열을 모르기 때문에 중단됩니다. 내 코드는 아래에 있습니다 - OnConfiguring(DbContextOptions options)
무시에서 볼 수 있듯이 DbContextOptions
을 통해 연결 문자열을 강제로 넣지 만 이상적이지는 않습니다. 그 두 문자가 어디인지 이해하지 못하고있는 것 같습니다. IServiceProvider
및 IOptionsAccessor 매개 변수는 와라.
도움 주셔서 감사합니다.
namespace Project.Models
{
// Add profile data for application users by adding properties to the ApplicationUser class
public class ApplicationUser : IdentityUser
{
public string CompanyName { get; set; }
}
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
private static bool _created = false;
public DbSet<Business> Businesses { get; set; }
public ApplicationDbContext()
: base()
{
if (!_created)
{
Database.EnsureCreated();
_created = true;
}
}
protected override void OnConfiguring(DbContextOptions options)
{
var configuration = new Configuration();
configuration.AddJsonFile("config.json");
configuration.AddEnvironmentVariables();
options.UseSqlServer(configuration.Get("Data:DefaultConnection:ConnectionString"));
}
public ApplicationDbContext(IServiceProvider serviceProvider, IOptionsAccessor<DbContextOptions> optionsAccessor)
: base(serviceProvider, optionsAccessor.Options)
{
// Create the database and schema if it doesn't exist
// This is a temporary workaround to create database until Entity Framework database migrations
// are supported in ASP.NET vNext
if (!_created)
{
Database.EnsureCreated();
_created = true;
}
}
}
}
[전통 .NET 응용 프로그램에서 사용 EF7을 (https://github.com/aspnet/EntityFramework/wiki/Using-EF7-in-Traditional-.NET-Applications) 도움이 될 수 있습니다 너 조금. – Ricky