私のコードのいくつかを素早くテストするために、C#インタラクティブ・ウィンドウを使用しようとしています。 DbContext(EF6)に関連するコードをテストしようとすると、問題が発生します。エンティティ・フレームワークC#インタラクティブ・ウィンドウ(Oracle)のコード・ファースト
私は、対話型ウィンドウがApp.configファイルを読み込まないため、接続文字列を渡す必要があることを理解しているので、接続文字列を指定するコンストラクタをオーバーライドしました。
ODP.NETプロバイダでOracleデータベースを使用しています。ここで
私は対話型のウィンドウ上で実行しようとしているコードです:
#r "MyProjPath\bin\Debug\CsCore.EntityDomain.dll"
#r "MyProjPath\bin\Debug\EntityFramework.dll"
#r "MyProjPath\bin\Debug\EntityFramework.SqlServer.dll"
#r "MyProjPath\bin\Debug\Oracle.ManagedDataAccess.dll"
#r "MyProjPath\bin\Debug\Oracle.ManagedDataAccess.EntityFramework.dll"
var ctx = new CsCore.EntityDomain.Pivot.PivotContext("Data Source=MyDataSource;User Id=MyUser;Password=MyPassword;");
ctx.ReconciliationRules.FirstOrDefault()
、これは私が
The underlying provider failed on Open.
+ System.Data.Entity.Core.EntityClient.EntityConnection.Open()
+ System.Data.Entity.Core.Objects.ObjectContext.EnsureConnection(bool)
+ System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction<T>(Func<T>, System.Data.Entity.Infrastructure.IDbExecutionStrategy, bool, bool)
+ System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute<TResult>(Func<TResult>)
+ ObjectQuery<T>.GetResults(Nullable<System.Data.Entity.Core.Objects.MergeOption>)
+ LazyEnumerator<T>.MoveNext()
+ System.Linq.Enumerable.FirstOrDefault<TSource>(IEnumerable<TSource>)
+ System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.ExecuteSingle<TResult>(IEnumerable<TResult>, System.Linq.Expressions.Expression)
+ System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.System.Linq.IQueryProvider.Execute<TResult>(System.Linq.Expressions.Expression)
+ System.Data.Entity.Internal.Linq.DbQueryProvider.Execute<TResult>(System.Linq.Expressions.Expression)
+ System.Linq.Queryable.FirstOrDefault<TSource>(IQueryable<TSource>)
マイDbContextは次のようになり得る例外です:
public class PivotContext : DbContext
{
public virtual DbSet<PivotReconciliationRule> ReconciliationRules { get; set; }
public PivotContext() : this("name=myConnectionStringName")
{
}
public PivotContext(string nameOrConnectionString) : base(nameOrConnectionString)
{
Database.SetInitializer<PivotContext>(null);
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.HasDefaultSchema("MYSCHEMA");
base.OnModelCreating(modelBuilder);
}
}
を
私は正しいプロバイダを指定できないという理由が考えられます。誰かがC#インタラクティブウィンドウからコードファーストのEntityFrameworkコード(oracle)を使用することができましたか?
事前に感謝します。
ニコラ
こんにちはJimmyFL、あなたの答えに感謝します。私は質問に私のDbContextを入れました。私はApp.configを取得することができますが、C#インタラクティブはそれを使用せず、コードからDbContextを設定する必要があります。また、私が見る限りでは、OnConfiguringメソッドは、EF6ではなくEFCore用です。 –