asp.net - 创建 Entity Framework 数据库时出现 Mysql 语法错误

标签 asp.net mysql entity-framework

我是第一次使用 asp.net。我想将它与 MySQL 数据库一起使用,因为这是我的托管服务提供的,我不想升级/更改服务。我正在使用 Visual Web Developer 2010 Express。我从默认模板创建了一个 MVC 4 项目。该模板创建了 ASP.NET Simple Membership 对象,这正是我想要工作的。使用默认数据库连接字符串时,项目可以正确构建并运行。当我更改 web.config 文件以指向 MySQL 时,当我尝试导航到帐户文件夹中的任何页面时,会出现以下错误。

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IDENTITY, RoleName nvarc' at line 2

当我打开 MySQL 工作台并连接到本地服务器时,我注意到数据库已创建。如果我删除数据库并再次运行应用程序,它将重新创建。我注意到它是否已正确创建,或者是否创建了整个数据库,但那里有一些东西。

显然, Entity Framework 创建的 SQL 语法存在问题。我是否需要在 web.config 文件中添加一些内容来告诉它在创建查询时应该使用什么语法?

这两天我一直在寻找这个问题的答案。任何指向正确方向的帮助将不胜感激。

我使用的是 mysql 服务器版本 5.5.27。和连接器 6.5.4.0

这是我的 web.config 文件的 mysql 部分:

  <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.5.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    </DbProviderFactories>
  </system.data>
  <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=aspnet-MyWebPage-20120817115958;Integrated Security=SSPI" providerName="System.Data.SqlClient" />
    <add name="myDatabaseConnection" connectionString="server=localhost;Port=3306;uid=root;pwd=****;database=myDatabase;" providerName="MySql.Data.MySqlClient" />        
  </connectionStrings>

编辑添加代码

 [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public sealed class InitializeSimpleMembershipAttribute : ActionFilterAttribute
{
    private static SimpleMembershipInitializer _initializer;
    private static object _initializerLock = new object();
    private static bool _isInitialized;

    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        // Ensure ASP.NET Simple Membership is initialized only once per app start
        LazyInitializer.EnsureInitialized(ref _initializer, ref _isInitialized, ref _initializerLock);
    }

    private class SimpleMembershipInitializer
    {
        public SimpleMembershipInitializer()
        {
            Database.SetInitializer<UsersContext>(null);

            try
            {
                using (var context = new UsersContext())
                {
                    if (!context.Database.Exists())
                    {
                        // Create the SimpleMembership database without Entity Framework migration schema
                        ((IObjectContextAdapter)context).ObjectContext.CreateDatabase();
                    }
                }

                WebSecurity.InitializeDatabaseConnection("LocalMySqlServer", "UserProfile", "UserId", "UserName", autoCreateTables: true);
            }
            catch (Exception ex)
            {
                throw new InvalidOperationException("The ASP.NET Simple Membership database could not be initialized. For more information, please see http://go.microsoft.com/fwlink/?LinkId=256588", ex);
            }
        }
    }
}



    public class UsersContext : DbContext
{
    public UsersContext()
        : base("LocalMySqlServer")
    {
    }

    public DbSet<UserProfile> UserProfiles { get; set; }
}

最佳答案

尝试修改SMP的源代码并删除特定于ms sql server的语法。

关于asp.net - 创建 Entity Framework 数据库时出现 Mysql 语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12041802/

相关文章:

c# - 带有 NOLOCK 的 Entity Framework

c# - 从 javascript 或代码隐藏获取资源对象

java - SOLR 会占用服务器大量内存吗?

javascript - Globalize.js 十进制数字验证的值错误

mysql - 如何在 MySQL 中使用 LEFT JOIN 优化 SELECT INTO OUTFILE 查询

mysql - 是否有 "easy"方法将网站数据库上的用户从 MsSql 身份验证提供程序迁移到 MySql 身份验证提供程序?

c# - LINQ:如何清空投影中的属性?

entity-framework - 如何找到流利的API映射了哪个表?

jquery - 在datalist中找到div并提交按钮

c# - 如何更改 Blazor WASM 身份页面导航栏中的标题/品牌?