EF 6.0 Code First 迁移MySql数据库

来源:互联网 发布:索尼手机 知乎 编辑:程序博客网 时间:2024/05/21 07:12
一、准备工作
    使用NUGET安装Entity Framework 6,下载MySql Connector/Net 6.9.5
 
二、创建实体
    我们在下面创建了两个类(博客和文章),并使用了虚拟属性标识了他们的关系。这使得实体框架具有了延迟加载特性,延迟加载意味着从数据库加载内容的时候将会自动加载关联实体的内容(除了我们设置了禁用延迟加载)
  
复制代码
public class Blog    {        public int BlogId { get; set; }                public string Name { get; set; }        public virtual List<Post> Posts { get; set; }    }    public class Post    {        public int PostId { get; set; }        public string Title { get; set; }                public string Content { get; set; }        public int BlogId { get; set; }                public virtual Blog Blog { get; set; }    }
复制代码

 

三、创建Context&生成数据库
    新建一个Blogging类继承DbContext,在构造函数指定使用的数据库连接,如果不指定默认是使用MS SQL。
   
复制代码
public class BloggingContext : DbContext    {        public BloggingContext()            : base("MySqlServer")        { }        public DbSet<Blog> Blogs { get; set; }        public DbSet<Post> Posts { get; set; }    } 
复制代码

 

读取和写入数据
    运行这个应用程序的时候,EF会自动帮我们创建数据库如果还没有创建数据库。
   
复制代码
class Program    {        static void Main(string[] args)        {            using (BloggingContext db = new BloggingContext())            {                db.Blogs.Add(new Blog { Name = "Another Blog" });                db.SaveChanges();                foreach (var blog in db.Blogs)                {                    Console.WriteLine(blog.Name);                }             }            Console.WriteLine("Press any key to exit...");            Console.ReadKey();         }    }
复制代码

 

当执行完成我们就可以去查看软盘生成的数据库
生成如下
 
 
五、更改数据模型
在Package Manager Console输入 Eable-Migrations 开启EF迁移功能
运行成功之后会在我们的酷站网软项目文件下增加Migrations文件夹以及Configuration.cs,这个文件包含迁移Blogging的设置。
 
对Blogs类增加Url属性,在刚才的PMC输入 PM> Add-Migration AddUrl 会报下面错误
No MigrationSqlGenerator found for provider 'MySql.Data.MySqlClient'. Use the SetSqlGenerator method in the target migrations configuration class to register additional SQL generators.
最后在http://stackoverflow.com/questions/15142841/no-entity-framework-provider-found-for-mysql-data-mysqlclient-ado-net-provider找到了答应,需要在Context指定mySql的配置文件
 
在重新运行上面命令正确生成类文件
 
其实到了这里还没有真正的更新数据库我们还需要执行 Update-Database -Verbose
查看数据库已经成功更新
 
六、Fluent API
我们使用这个API来修改数据库的表设置
在执行修改的迁移命令
成功更新数据库
 
参考文档https://msdn.microsoft.com/en-us/data/jj193542
0 0