0

古いバージョンでは、DbContextコンストラクタで直接接続文字列を指定できます。 EFのV6でEntity FrameworkコアのApp.configまたはWebConfig.configから接続文字列をロードする方法

例: のApp.configでの私の接続文字列を以下に示す。

<connectionStrings> 
    <add name="DatabaseConnecionString" 
    connectionString="Data Source=.;Initial Catalog=db;Integrated Security=true" 
    providerName="System.Data.SqlClient"/> 
    </connectionStrings> 

var myDbContext = MyDbContext("name=DatabaseConnecionString"); 

私はEF 7 /コアで同じことを行うと、私はエラーを取得します?

答えて

1

Entity Framework 7/Coreでは、過去と同じように接続文字列名をDbContextベースのコンストラクタに渡すことはできませんが、問題の別の解決方法があります。

var optionsBuilder = new Microsoft.EntityFrameworkCore.DbContextOptionsBuilder(); 
var connectionString = ConfigurationManager.ConnectionStrings["DatabaseConnecionString"].ConnectionString; 
optionsBuilder.UseSqlServer(connectionString); 
using (var dbContext = new DatabaseContext(optionsBuilder.Options)) 
{ 
    dbContext.Users.Add(new User() { Name = "Bassam" }); 
    dbContext.SaveChanges(); 
} 

ソリューションII:

データベースの移行のために設けられた接続文字列を使用したい場合、あなたはDbContextでロードを配置する必要があり、私

ソリューション。

public class DatabaseContext : DbContext 
{ 
    public DbSet<User> Users { get; set; } 

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) 
    { 
     var connectionString = ConfigurationManager.ConnectionStrings["DatabaseConnecionString"].ConnectionString; 
     optionsBuilder.UseSqlServer(connectionString); 
    } 

    public DatabaseContext() 
    { 
    } 

    public DatabaseContext(DbContextOptions s) 
    : base(s) 
    { 
    } 
} 

App.configファイルは、あなたのアセンブリ(DLL/EXE)でないなら、あなたはアドオンの移行/更新-移行データ移行コマンドを使用して、スタートアッププロジェクトを与える必要があります。

関連する問題