Формат строки инициализации не соответствует спецификации, начиная с индекса 0, без каких-либо опечаток в connectionString - PullRequest
0 голосов
/ 28 февраля 2019

Я внимательно прочитал все ответы на подобные вопросы об этом аргументе, но не нашел решения, подходящего для моей проблемы.

Вкратце: у меня есть решение C # с использованием MySQL и Prism;В моем app.config есть следующий раздел EntityFramework:

<entityFramework>
   <defaultConnectionFactory ype="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
        <providers>
          <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.12.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>
          <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
        </providers>
      </entityFramework>
      <connectionStrings configSource="Connections.config" />

Файл Connections.config содержит следующий код:

  <add name="DataContext"
       connectionString = "Server=localhost; Port=3306; Database=dbName; uid=<correct user>; pwd=<correct password>" providerName="MySql.Data.MySqlClient"/>

Я уверен, что у меня естьнет опечатки в коде конфигурации, особенно в строке подключения;действительно, миграция кода работает как шарм;но когда я прихожу к самому первому доступу к DataContext, я получаю печально известное сообщение об исключении.Код следующий:

using MyApp.DataAccess;
using System;
using System.Linq;
using System.Security.Principal;

namespace myApp.Core
{
    public class UserManager : IUserManager
   {
      private UserAccessLevels _level;
      (...)
      private DataContext DataContext { get; }

      public UserManager(DataContext dc) { // dc is injected by DI container
         DataContext = dc ?? throw new ArgumentNullException(nameof(DataContext));

         var winUserId = WindowsIdentity.GetCurrent();
         var loginName = winUserId.Name.Substring(winUserId.Name.LastIndexOf('\\') + 1);
         // In the following line I have the error:
         var usr = DataContext.AppUser.SingleOrDefault(x => x.LoginId == loginName);

Буду очень признателен за любую подсказку или реальное освещение ... спасибо вам всем

Обновление:

в соответствии с запросом следуйте коду моего класса DataContext:

   [DbConfigurationType(typeof(MySqlEFConfiguration))]
   public partial class DataContext : DbContext
   {

      (... IDbSets registration ...)

      public DataContext() : base("DataContext") {
         this.Configuration.ProxyCreationEnabled = false;
      }

      (... the rest of code ...)

Опять же, помните, что миграции кода работают отлично;это очень странное поведение.

1 Ответ

0 голосов
/ 28 февраля 2019

в вашем файле connections.config создайте раздел с connectionStrings в качестве имени узла в основном Web.config файле. Вот код, который может решить вашу проблему.

<connectionStrings>
<add name="DataContext"
       connectionString = "Server=localhost; Port=3306; Database=dbName; uid=<correct user>; pwd=<correct password>" providerName="MySql.Data.MySqlClient"/>
</connectionStrings>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...