gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 02:31:48 26 4
gpt4 key购买 nike

我是第一次接触 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com