InnerException:表' xxx.aspnetusers'不存在

时间:2015-01-15 06:08:50

标签: mysql sql asp.net-mvc-4 entity-framework-6

我有一个使用Entity Framework 6.1.1和MySQL 6.9.5.0的ASP.NET MVC 4 Web API项目。当我使用DHC调用/ api / Account / Register时,代码会在

处中断
IdentityResult result = await UserManager.CreateAsync(user, model.Password);
在AccountController中

我得到一个说明

的InnerException
Table 'xxx.aspnetusers' doesn't exist

以下是我的web.config

的部分内容
<connectionStrings>
<add name="ClockitDb" connectionString="Data Source=ClockitDb;port=3306;Initial Catalog=ClockitDb;Server=localhost;user id=root;password=m916600026;"
  providerName="MySql.Data.MySqlClient" />
</connectionStrings>

<!-- Some code-->

<entityFramework codeConfigurationType="MySql.Data.Entity.MySqlEFConfiguration, MySql.Data.Entity.EF6">
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"/>
<providers>
  <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
  <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers> 
</entityFramework>

<!-- Some code-->

<system.web>

<authentication mode="Forms" />
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
<membership defaultProvider="MySQLMembershipProvider">
  <providers>
    <remove name="MySQLMembershipProvider" />
    <add name="MySQLMembershipProvider" type="MySql.Web.Security.MySQLMembershipProvider, MySql.Web, Version=6.9.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionStringName="LocalMySqlServer" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="false" passwordFormat="Clear" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" passwordStrengthRegularExpression="" />
  </providers>
</membership>
<profile defaultProvider="MySQLProfileProvider">
  <providers>
    <remove name="MySQLProfileProvider" />
    <add name="MySQLProfileProvider" type="MySql.Web.Profile.MySQLProfileProvider, MySql.Web, Version=6.9.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionStringName="LocalMySqlServer" applicationName="/" />
  </providers>
</profile>
<roleManager defaultProvider="MySQLRoleProvider">
  <providers>
    <remove name="MySQLRoleProvider" />
    <add name="MySQLRoleProvider" type="MySql.Web.Security.MySQLRoleProvider, MySql.Web, Version=6.9.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionStringName="LocalMySqlServer" applicationName="/" />
  </providers>
</roleManager>
<siteMap defaultProvider="MySqlSiteMapProvider">
  <providers>
    <remove name="MySqlSiteMapProvider" />
    <add name="MySqlSiteMapProvider" type="MySql.Web.SiteMap.MySqlSiteMapProvider, MySql.Web, Version=6.9.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionStringName="LocalMySqlServer" applicationName="/" />
  </providers>
</siteMap>
<webParts>

<personalization defaultProvider="MySQLPersonalizationProvider">
    <providers>
      <remove name="MySQLPersonalizationProvider" />
      <add name="MySQLPersonalizationProvider" type="MySql.Web.Personalization.MySqlPersonalizationProvider, MySql.Web, Version=6.9.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionStringName="LocalMySqlServer" applicationName="/" />
    </providers>
  </personalization>
</webParts>

<entityFramework codeConfigurationType="MySql.Data.Entity.MySqlEFConfiguration, MySql.Data.Entity.EF6">
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
  <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
  <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>

3 个答案:

答案 0 :(得分:4)

我有完全相同的问题。 我按照以下教程进行操作 How to set up application using ASP.NET Identity with MySQL Provider

请务必遵循本教程的所有步骤,甚至是迁移设置,否则会出现同样的错误。

答案 1 :(得分:1)

该异常明确指出数据库中缺少aspnetusers。但是,在更多的调查结果中,我想你想通过asp.net论坛回答这个问题。

http://forums.asp.net/t/1977214.aspx?Mvc+5+Identity+Error+Invalid+object+name+dbo+AspNetUsers

对于角色,成员资格提供者,asp.net [包含整个asp.net stack / webapi]和mysql,你需要有特定于mysql的提供者。为此,您可以参考 http://www.codeproject.com/Articles/117157/Setting-up-MySql-Membership-with-Visual-Studio

如果这可以解决您的问题,请告诉我。

答案 2 :(得分:-1)

我尝试按照

上的说明操作

http://www.codeproject.com/Articles/117157/Setting-up-MySql-Membership-with-Visual-Studio

当我在ASP网站管理工具中启动安全选项卡时,出现错误

The pre-application start initialization method Start on type WebMatrix.WebData.PreApplicationStartCode threw an exception with the following error message: Could not load file or assembly 'MySql.Data, Version=6.9.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) (C:\Users\Jaseem Abbas\Documents\Visual Studio 2013\Projects\MySQLSample1\MySQLSample1\web.config line 33).

我在网络配置中的第33行以

开头
<membership defaultProvider="MySQLMembershipProvider">
  <providers>
    <add name="MySQLMembershipProvider"
         type="MySql.Web.Security.MySQLMembershipProvider,
         MySql.Web, Version=6.9.5.0, 
         Culture=neutral, 
         PublicKeyToken=c5687fc88969c44d"
         connectionStringName="LocalMySqlServer"
         enablePasswordRetrieval="false"
         enablePasswordReset="true"
         requiresQuestionAndAnswer="false"
         requiresUniqueEmail="true"
         passwordFormat="Hashed"
         maxInvalidPasswordAttempts="5"
         minRequiredPasswordLength="6"
         minRequiredNonalphanumericCharacters="0"
         passwordAttemptWindow="10"
         applicationName="/"
         autogenerateschema="true" />
  </providers>
</membership>
<profile>ASP
  <providers>
    <clear />
    <add type="MySql.Web.Security.MySQLProfileProvider, 
         MySql.Web, Version=6.9.5.0, 
         Culture=neutral, 
         PublicKeyToken=c5687fc88969c44d"
         name="MySqlProfileProvider"
         applicationName="/"
         connectionStringName="LocalMySqlServer"
         autogenerateschema="true" />
  </providers>
</profile>
<roleManager enabled="true" defaultProvider="MySqlRoleProvider">
  <providers>
    <clear />
    <add connectionStringName="LocalMySqlServer"
         applicationName="/"
         name="MySqlRoleProvider"
         type="MySql.Web.Security.MySQLRoleProvider, 
         MySql.Web, Version=6.9.5.0, 
         Culture=neutral, 
         PublicKeyToken=c5687fc88969c44d"
         autogenerateschema="true" />
  </providers>