Ich versuche Oracle mit dotConnect für Oracle (v 9.4) zu verwenden. Da aspnet core 2.0 volle Unterstützung für das Referenzieren des älteren .net-Frameworks bietet, versuche ich, eine Verbindung zur Datenbank mit einer regulären .net-Assembly herzustellen (dh Assembly mit meinem DbContext ist in Targeting .net 4.6.1 und wurde in meinem asp.net verwiesen Kern 2-Projekt).aspnetcore 2.0 mit EF6 und dotConnect für Oracle
ich die unten stehende Frage bin vor
"System.TypeInitializationException: 'The type initializer for 'System.Data.Entity.Internal.AppConfig' threw an exception.'
Inner Exception: FileNotFoundException: Could not load file or assembly 'System.Configuration.ConfigurationManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. The system cannot find the file specified."
Hier ist meine CodeConfig
Klasse
public class CodeConfig : DbConfiguration
{
public CodeConfig()
{
SetProviderServices("Devart.Data.Oracle", Devart.Data.Oracle.Entity.OracleEntityProviderServices.Instance);
SetProviderFactory("Devart.Data.Oracle", new Devart.Data.Oracle.OracleProviderFactory());
}
}
Meine DbContext Klasse
[DbConfigurationType(typeof(CodeConfig))]
public partial class MyEntities : DataContext, IMyStoredProcedures
{
public MyEntities(string nameOrConnectionString) : base(nameOrConnectionString)
{
Configure();
}
private void Configure()
{
this.Configuration.AutoDetectChangesEnabled = true;
this.Configuration.LazyLoadingEnabled = true;
this.Configuration.ProxyCreationEnabled = true;
this.Configuration.ValidateOnSaveEnabled = true;
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
}
...
}
Exception wird ausgelöst, wenn
base(nameOrConnectionString)
wird ausgeführt.
DI in Start
var dbContext = new MyEntities(Configuration["Data:DefaultConnection:ConnectionString"]);
services.AddScoped<IDataContextAsync>(provider => dbContext);
services.AddScoped<IMyStoredProcedures>(provider => dbContext);
Appsettings.json
"Data": {
"DefaultConnection": {
"ConnectionString": "metadata=res://Org.MyApp.Entities/MyModel.csdl|res://Org.MyApp.Entities/MyModel.ssdl|res://Org.MyApp.Entities/MyModel.msl;provider=Devart.Data.Oracle;provider connection string="User Id=UID;Password=****;Server=Server;Persist Security Info=True""
}
}
Die folgenden Verbindungen werden als Referenz verwendet.
aspnet core 1.x with EF6 (auf 1.x Basierend aber hat nützliche Informationen)