初始化字符串的格式不符合从索引0开始的规范,在connectionString中没有任何拼写错误

问题描述 投票:1回答:1

我仔细阅读了关于这个论点的类似问题的所有答案,但我没有找到适合我的问题的解决方案。

简而言之:我有一个使用MySQL和Prism的C#解决方案;我的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 ...)

再次,请记住代码迁移工作正常;这是一种非常奇怪的行为。

c# mysql code-first
1个回答
0
投票

在您的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>
© www.soinside.com 2019 - 2024. All rights reserved.