MySQL CodeFirst的布和注意事项。MySQL CodeFirst的布和注意事项。

by admin on 2018年10月5日

mysql+ef的配置相较mssql+ef来说复杂一些。我之感想就安排难度在插件版本造成的各种不兼容问题。另外参考了成千上万博客,将大半独博客里的更综合才得落实,因为无是每个人的操作都和那些博客作者描述的景况一致,不过解决以后外还吓说。现在从零开始操作mysql+CodeFirst的落实,总结自身之安排过程。先保证安装并打开了mysql数据库:

mysql+ef的布相较mssql+ef来说复杂一些。我之感触就是安排难度在插件版本造成的各种非兼容问题。另外参考了很多博客,将多独博客里之经历综合才得落实,因为不是每个人的操作都同那些博客作者描述的景况一样,不过解决以后外都好说。现在从零开始操作mysql+CodeFirst的实现,总结自己的布局过程。先管安装并打开了mysql数据库:

1.新建控制台项目

1.新建控制台项目

2.每当先后包管理器控制台里依次安装(注意:EF版本一定要小,另外第②同第③管教版本相同,因为③与②出指关系,版本不一样会导致部分问题)
①Install-Package EntityFramework -Version
6.1.3

2.于程序包管理器控制台里依次安装(注意:EF版本一定要是没有,另外第②与第③管版本一样,因为③跟②起指关系,版本不雷同会招有的题材)
①Install-Package EntityFramework -Version
6.1.3

②Install-Package MySql.Data -Version
6.8.8

②Install-Package MySql.Data -Version
6.8.8

③Install-Package MySql.Data.Entity
-Version 6.8.8

③Install-Package MySql.Data.Entity
-Version 6.8.8

3.App.Config配置文件里丰富:

3.App.Config配置文件里增长:

<connectionStrings>
<add name="connStr" connectionString="data source=127.0.0.1;user 
id=root;password=123456;database=sqltest;" providerName="MySql.Data.MySqlClient" />
</connectionStrings>
<connectionStrings>
<add name="connStr" connectionString="data source=127.0.0.1;user 
id=root;password=123456;database=sqltest;" providerName="MySql.Data.MySqlClient" />
</connectionStrings>

4.依次新建Person实体类,PersonConfig类,详细代码:

4.相继新建Person实体类,PersonConfig类,详细代码:

public class Person
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
    }
public class Person
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
    }

 

 

class PersonConfig : EntityTypeConfiguration<Person>
    {
        public PersonConfig()
        {
            this.ToTable("T_Persons");
        }
    }
class PersonConfig : EntityTypeConfiguration<Person>
    {
        public PersonConfig()
        {
            this.ToTable("T_Persons");
        }
    }

5.新建MyContext类,详细代码(注意:如果无在相近上方做DBConfigurationType标记的说话会以最后操作update-database时错,别忘)

5.新建MyContext类,详细代码(注意:如果未以相近上方做DBConfigurationType标记的语会在最后操作update-database时错,别忘)

[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
    class MyContext : DbContext
    {
        public MyContext()
            : base("name=connStr")//name对应配置文件里的连接字符串name属性
        {

        }
        public DbSet<Person> Persons { get; set; }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
            modelBuilder.Configurations.AddFromAssembly(Assembly.GetExecutingAssembly());
        }
    }
[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
    class MyContext : DbContext
    {
        public MyContext()
            : base("name=connStr")//name对应配置文件里的连接字符串name属性
        {

        }
        public DbSet<Person> Persons { get; set; }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
            modelBuilder.Configurations.AddFromAssembly(Assembly.GetExecutingAssembly());
        }
    }

6.蝉联以程序包管理器控制高运行命令Enable-Migrations
-force,成功后以见面并发如图所示信息:

6.持续当程序包管理器控制高运行命令Enable-Migrations
-force,成功后将见面出现如图所示信息:

亚洲必赢手机 1

亚洲必赢手机 2

专注:此时于路下会自动生成文件夹和一个接近,如图所示:

注意:此时在类型下会自动生成文件夹和一个好像,如图所示:

亚洲必赢手机 3

亚洲必赢手机 4

7.开辟Configuration.cs,将AutomaticMigrationsEnabled的价修改为true,并且以先后包管理器控制高运行命令update-database
-force,成功后拿会晤起如图所示信息:

7.开辟Configuration.cs,将AutomaticMigrationsEnabled的价修改也true,并且在程序包管理器控制高运行命令update-database
-force,成功后用会见冒出如图所示信息:

亚洲必赢手机 5

亚洲必赢手机 6

顾:没当MyContext类上方标记DBConfigurationType害得我立同样步浪费了一些只钟头,会唤起No
MigrationSqlGenerator found for provider ‘MySql.Data.MySqlClient’. Use
the SetSqlGenerator method in the target migrations configuration class
to register additional SQL generators.

瞩目:没在MyContext类上方标记DBConfigurationType害得自己马上同样步浪费了一点只钟头,会提醒No
MigrationSqlGenerator found for provider ‘MySql.Data.MySqlClient’. Use
the SetSqlGenerator method in the target migrations configuration class
to register additional SQL generators.

8.现在来测试效果。目前mysql里没名字被sqltest的数据库是,CodeFirst是经过代码来动生成数据库的。主函数代码如下:

8.现在来测试效果。目前mysql里没名字被sqltest的数据库是,CodeFirst是经过代码来动生成数据库的。主函数代码如下:

using (MyContext ctx = new MyContext())
            {
                Person per1 = new Person { Name = "per1", Age = 12 };
                Person per2 = new Person { Name = "per2", Age = 17 };
                Person per3 = new Person { Name = "per3", Age = 19 };
                ctx.Persons.Add(per1);
                ctx.Persons.Add(per2);
                ctx.Persons.Add(per3);
                ctx.SaveChanges();
                Console.WriteLine("添加成功");
            }
            Console.ReadKey();
using (MyContext ctx = new MyContext())
            {
                Person per1 = new Person { Name = "per1", Age = 12 };
                Person per2 = new Person { Name = "per2", Age = 17 };
                Person per3 = new Person { Name = "per3", Age = 19 };
                ctx.Persons.Add(per1);
                ctx.Persons.Add(per2);
                ctx.Persons.Add(per3);
                ctx.SaveChanges();
                Console.WriteLine("添加成功");
            }
            Console.ReadKey();

9.周转后如成功,刷新Navicat for
MySQL的数据库列表可以发现新转变的数据库:

9.运作后使成功,刷新Navicat for
MySQL的数据库列表可以窥见新变化的数据库:

亚洲必赢手机 7

亚洲必赢手机 8

注意:①自动生成了__migrationhistory表说明配置不行成功。②PersonConfig.cs里之this.ToTable(“T_Persons”);影响实体类映射成功后底表名。③默认Id字段为主键并且自增,因此无待手动为Id属性赋值。

专注:①自动生成了__migrationhistory表说明配置非常成功。②PersonConfig.cs里之this.ToTable(“T_Persons”);影响实体类映射成功后底表名。③默认Id字段为主键并且自增,因此无待手动为Id属性赋值。

 

 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图