C# 대화식 창을 사용하여 일부 코드를 신속하게 테스트하려고합니다. DbContext (EF6)와 관련된 코드를 테스트하려고 할 때 문제가 발생합니다.엔티티 프레임 워크 C# 대화식 창 (Oracle)의 코드 - 첫 번째
대화 형 창이 App.config 파일을로드하지 않으므로 연결 문자열을 전달해야하므로 연결 문자열을 지정하는 생성자를 재정의했습니다.
오라클 데이터베이스를 ODP.NET 제공 업체와 함께 사용하고 있습니다.
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);
}
}
: 나는
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는 다음과 같습니다 얻을
#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()
이 예외입니다 : 여기
내가 대화 창에서 실행하기 위해 노력하고있어 코드입니다이유는 올바른 공급자를 지정할 수 없다고 생각합니다. 누군가가 C# 대화식 창에서 코드 우선 EntityFramework 코드 (oracle)를 사용하고 있습니까?
미리 감사드립니다. 당신은 (여기에 대한 DbContext의 OnConfiguring 방법을 구현해야 일반적으로
var AppConfig = System.Configuration.ConfigurationManager.OpenExeConfiguration(@"bin\Debug\MyApp.exe");
Console.WriteLine($"Loaded {AppConfig.ConnectionStrings.ConnectionStrings.Count} connection strings");
: 모든
니콜라
안녕하세요 JimmyFL, 답변 해 주셔서 감사합니다. 내 DbContext 질문에 넣어. App.config를 검색 할 수 있지만 C# 대화 형이이를 사용하지 않는다는 것을 알고 있습니다. 여전히 코드에서 DbContext를 구성해야합니다. 또한, 내가 볼 수있는 한, OnConfiguring 방법은 EFCore가 아닌 EFCore를위한 방법입니다. –