【问题标题】:EF Code first with existing MySql databaseEF 代码优先使用现有的 MySql 数据库
【发布时间】:2012-11-14 11:54:20
【问题描述】:

我创建了一个类,它对 MySql 数据库中的现有表进行建模。下面是类:

  public class class1
{
    [Key]
    public int id { get; set; }

    public int LastName { get; set; }
    public int FirstName { get; set; }

}

我还创建了一个此类。

public class Dbo : DbContext
{
    public DbSet<class1> Classs { get; set; }
}

我已经创建了我的控制器。现在,当我运行应用程序时,我收到此错误:

 MySql.Data.MySqlClient.MySqlException was unhandled by user code
  Message=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 '`id` int NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    `LastName` int NOT NULL, 
    `Fi' at line 2
  Source=MySql.Data
  ErrorCode=-2147467259
  Number=1064

MySql 表有这样的结构:

    `id` int(11) NOT NULL,
  `LastName` int(11) NOT NULL,
  `FirstName` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT

【问题讨论】:

  • 代码优先?对我来说,这看起来不像“代码优先”。这些表已经存在,对吧?
  • @spender 那是代码首先与现有数据库。检查codeproject.com/Articles/327945/…。那里的表已经存在。

标签: c# mysql asp.net-mvc visual-studio-2010


【解决方案1】:

根据错误消息,EF 正在尝试为您创建 Db。

如果你添加 null 初始化器,它应该可以工作

    public class Dbo : DbContext
    {
        public DbSet<class1> Classs { get; set; }
        public Dbo()
        {
            Database.SetInitializer<Dbo>(null);
        }
    }

这是另一篇 codeproject 文章,它对我有用:Using Entity Framework 4.1 Code First with an existing database

【讨论】:

  • 非常感谢。你说的对。当我检查 StackTrace 时,我注意到了这一点。尽管我的基础数据具有独立的表,但现在我正在继续创建关联。
猜你喜欢
  • 2012-04-27
  • 1970-01-01
  • 1970-01-01
  • 2018-09-05
  • 2012-08-12
  • 2019-10-23
  • 2012-03-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多