Проблемы с доступом к контексту в контроллере ASP.NET - PullRequest
0 голосов
/ 21 ноября 2018

Я создаю веб-приложение с использованием ASP.NET MVC.Я также намереваюсь получить доступ к удаленной базе данных MySQL.Хотелось бы сохранить Entity Framework.

Что я пытаюсь сделать, это получить доступ к контексту в моем контроллере.Это работало без проблем, используя решение базы данных vanilla.Однако теперь, когда я обращаюсь к удаленной базе данных, она, похоже, не работает должным образом.Соединение с базой данных является действительным - оно фактически мигрирует и загружается правильно.Но, когда я пытаюсь получить доступ к члену контекста, приложение не работает.

Web.config

<connectionStrings>
    <remove name="DBName" />
    <add name="DBName" connectionString="server=1.2.3.4;port=1234;user id=DBAdmin;password=DBPass;database=DBName;integrated security=True" providerName="MySQL.Data.MySqlClient" />
</connectionStrings>
<system.data>
    <DbProviderFactories>
        <remove invariant="MySql.Data.MySqlClient" />
        <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.9, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    </DbProviderFactories>
</system.data>
<entityFramework>
    <defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6">
        <parameters>
            <parameter value="v11.0" />
        </parameters>
    </defaultConnectionFactory>
    <providers>
        <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.9, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
        <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
</entityFramework>

Context.cs

[DbConfigurationType (typeof (MySql.Data.Entity.MySqlEFConfiguration))]
public class Context : DbContext {
    public Context () : base ("name=DBName") {
        Database.SetInitializer (new MigrateDatabaseToLatestVersion <Context, System.Data.Entity.Migrations.DbMigrationsConfiguration <Context>> ());
    }

    public DbSet<Software> Softwares { get; set; }
}

SoftwareController

public class SoftwareController : Controller {
    public ActionResult Index() {
        using (Context context = new Context ()) {
            List<Software> softwares = context.Softwares.ToList ();

            return View (softwares);
        }
    }
}

Ошибка

Указанный ключ отсутствует в словаре.

Ошибка источника

Список программ = context.Softwares.ToList ();

StackTrace

[KeyNotFoundException: указанный ключ отсутствует в словаре.] System.Collections.Generic.Dictionary`2.get_Item (ключ TKey) +12769097 MySql.Data.MySqlClient.<> c..Data.MySqlClient.MySqlConnection.get_ConnectionString () +41 System.Data.Entity.Infrastructure.Interception.DbConnectionDispatcher.b__12 (DbConnection t, DbConnectionInterceptionContext`1 c) +10 System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch (цель TTarget, операция Func`3, операция TInterceptionContext, перехват вызоваДействие`3 выполнено) +72 System.Data.Entity.Infrastructure.Interception.DbConnectionDispatcher.GetConnectionString (соединение DbConnection, DbInterceptionContext interceptionContext) +361 System.Data.Entity.Internal.InternalConnection.GetStoreConnectionString (DbConnectionString.)Entity.Internal.InternalConnection.OnConnectionInitialized () +28 System.Data.Entity.Internal.EagerInternalConnection..ctor (контекст DbContext, DbConnection существующиеConnection, логическое connectionOwned) +70 System.Data.Entity.DbContext..ctor (DbConnection существующийCon)contextOwnsConnection) +55 System.Data.Entity.Migrations.History.HistoryContext..ctor (DbConnection существующиеConnection, String defaultSchema) +16 MySql.Data.Entity. <> C. <. Ctor> b__0_1 (DbConnection существующиеConnection, строка defaultSchema) +29 System.Data.Entity.Migrations.History.HistoryRepository.CreateContext (соединение DbConnection, схема String) +37 System.Data.Entity.Migrations.History.d__16.MoveNext () +737 System.Linq.Enumerable.Any (источник IEnumerable`1) +77 System.Data.Entity.Migrations.DbMigrator.UpdateInternal (String targetMigration) +58 System.Data.Entity.Migrations. <> C__DisplayClasse.b__d () +13 System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists (действие mustSucceedToKeepDatabase) +422 System.Data.Entity.Migrations.DbMigrator.Update (String targetMata) +.Entity.MigrateDatabaseToLatestVersion`2.InitializeDatabase (контекст TContext) +108 System.Data.Entity.Internal. <> C__DisplayClassf`1.b__e () +76 System.Data.Entity.Internal.InternalContext.PerformInitializationAction (действие action60 +System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization () +357 System.Data.Entity.Internal.LazyInternalContext.b__4 (InternalContext c) +7 System.Data.Entity.Internal.RetryAction`1.PerformAction (вход TInput) +110 System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction (действие Action1)) +198 System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase () +73System.Data.Entity.Internal.InternalContext.Initialize () +30 System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType (Тип entityType) +16 System.Data.Entity.Internal.Linq.InternalSet`1.Initialize ()53 System.Data.Entity.Internal.Linq.InternalSet`1.GetEnumerator () +15 System.Data.Entity.Infrastructure.DbQuery`1.System.Collections.Generic.IEnumerable.GetEnumerator () +53 System.Collections.Generic.List`1..ctor (коллекция IEnumerable`1) +375 System.Linq.Enumerable.ToList (источник IEnumerable`1) +54 ProtoSim.Controllers.SoftwareController.Index () в D: \ Visual Studio \ Projects \ Проекты сайтов\ ProtoSim \ ProtoSim \ Controllers \ SoftwareController.cs: 13 lambda_method (Closure, ControllerBase, Object []) +61 System.Web.Mvc.ActionMethodDispatcher.Execute (контроллер ControllerBase, параметры Object []) +14 System.Web.Mvc.ReflectedActionDescriptor.Execute (ControllerContext controllerContext, IDictionary`2 параметры) +157 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod (ControllerContext controllerContext, ActionDescriptor actionDescriptor, параметры IDictionary`2) +27 System.Web.Mvc.Async. <> c.b__9_0 (IAsyncResult asyncResult, ActionInvocation innerInvokeState) +22 System.Web.Mvc.Async.Wrapped`ynsateE (IA) Sync ()asyncResult) +29 System.Web.Mvc.Async.WrappedAsyncResultBase`1.End () +49 System.Web.Mvc.Async.AsyncControllerActionInvoker.) +50 System.Web.Mvc.Async. <> C__DisplayClass11_1.b__2 () +228 System.Web.Mvc.Async. <> C__DisplayClass7_0.b__1 (IAsyncResult asyncResult) +10 System.Web.Mvc.Async.WrappedAsyncRasppedync.CallEndDelegate (IAsyncResult asyncResult) +10 System.Web.Mvc.Async.WrappedAsyncResultBase`1.End () +49 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithces.<> c__DisplayClass3_6.b__3 () +35 System.Web.Mvc.Async. <> c__DisplayClass3_1.b__5 (IAsyncResult asyncResult) +100 System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate (IAsyncResult asyncResult) +10 System.Web.Mvc.Async.WrappedAsyncResultBase`1.End () +49 System.WebynAsAInAsAsIncv.,.Mvc.Async.WrappedAsyncResultBase`1.End () +49 System.Web.Mvc.Controller.EndExecuteCore (IAsyncResult asyncResult) +45 System.Web.Mvc. <> C.b__151_2 (системный контроллер IAsyncResult + асинхронный контроллер).Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate (IAsyncResult asyncResult) +22 System.Web.Mvc.Async.WrappedAsyncResultBase`1.End () +49 System.Web.Mvc.Controller.EndExecuRyn)System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute (IAsyncResult asyncResult) +10 System.Web.Mvc. <> C.b__20_1 (IAsyncResult asyncResult, ProcessRequestState innerState) +28 System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate (IAsyncResult asyncResult) +29 System.Web.Mvc.Async.WrappedAsyncResultBase`1.End ()vHMc.c..EndProcessRequest (IAsyncResult asyncResult) +28 System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.Web.HttpApplication.ExecuteStepImpl (шаг IExecutionStep) +132 System.Web.HttpApplication.ExecuteStep (шаг IExecutionStep, логический и завершенный синхронно) + 163

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...