这里为什么要写ef和mysql的使用,ef默认连接的sqlserver ,使用起来可能会比较顺手,ef和mysql使用的时候会出现各种问题,所以这里就搞mysql,要有一颗勇于出错的心。
秉着不畏艰难的精神开始了ef和mysql之旅。
ef和mysql的配置就不多说了把,nuget出现之前,这些配置安装了什么的还有必要搞一搞,有个nuget这玩意,ef和mysql的安装和配置太简单了
通过nuget管理器安装完ef和mysql之后,配置一下连接字符串。接下来就可以搞代码了。
我们都知道,ef开发模式有3种:DateBase First(数据库优先)、Model First(模型优先)和Code First(代码优先)。这里我用的是code first 一个简单的例子:
public class BloggingContext : DbContext { public BloggingContext() : base("name=testConn") { } public DbSet<Person> Blogs { get; set; } public DbSet<DepartPerson> Posts { get; set; } } class Program { static void Main(string[] args) {//模型改变重新创建数据库 Database.SetInitializer(new DropCreateDatabaseIfModelChanges<BloggingContext>()); using (var db = new BloggingContext()) { Person blog = new Person() { Name = "zhangsan", Age = "29", ID = Guid.NewGuid().ToString().Replace("-", "") }; db.Blogs.Add(blog); db.SaveChanges(); foreach (var item in db.Blogs) { Console.WriteLine("Name:" + item.Name); } } Console.Read(); } }
这里简单介绍一下Database.SetInitializer方法
一:数据库不存在时重新创建数据库
Database.SetInitializer<testContext>(new CreateDatabaseIfNotExists<testContext>());
二:每次启动应用程序时创建数据库
Database.SetInitializer<testContext>(new DropCreateDatabaseAlways<testContext>());
三:模型更改时重新创建数据库
Database.SetInitializer<testContext>(new DropCreateDatabaseIfModelChanges<testContext>());
四:从不创建数据库
Database.SetInitializer<testContext>(null);
这对这几种方式,可以通过代码做出改动,然后调试一下观察一下数据库的变化,会理解的更透彻!