EF使用CodeFirst创建数据库和表
EF支持三种实体模型:Code First,Model First和DB First,分别表示代码优先,模型优先和数据库优先。目前就个人来说使用CodeFirst最多,对此相对比较熟悉,先写下Code First的使用吧。
那什么是Code First代码优先呢?通俗来说,就是先写好代码,建立好模型,程序员只需关注对象间的关系,即可在数据库生成相应的表,基本上做到了与数据库的完全分离。为啥说基本上呢,其实是有道理的。
那Code First有什么优点呢?我们为什么要用它?
(1)如上面所说,程序员不需要关心数据库里面的情况,只需处理好类和对象的关系就好,其余的事情不用咱们管了。
(2)应该是便于测试吧,因为使用DBFirst的话会生成EDMX文件,它与数据库绑定性较强,个人觉得略麻烦。
(3)微软主推CodeFirst吧,这应该算是一个不错的工具。
那么接下来咱试试看!
1、先创建一个项目,啥都行,我习惯性的弄了一个控制台,先添加一个文件夹,再右键添加--新建项,选择ADO.NET实体数据模型,为项目命名,点击添加。
2、在实体数据模型向导中选择空的CodeFirst模型,官方也给出了说明,可以生成数据库。
3、系统会自动生成一个类,注意,我们需要自动生成的模型都需要继承自DbContext,可以看到,微软已经给了我们很多提示了,比如:我们需要自己配置连接数据库的字符串;我们要创建的类都需要在MyEntity实体类中添加DbSet。不得不说微软在这些地方做的还是很不错的,一目了然!
4、然后我新建了两个类,UserInfo和Roles。这里需要根据提示引入相应的命名空间。并且需要用Key为自己的表指定主键,用Table为类指定表名,StringLength为字段定义长度.........
这时需要按照微软提供的模板将这两个类添加到DbSet。这里的“name=MyEntity”表示使用名字为MyEntity的字符串连接数据库,如果只写"MyEntity"的话,表示直接创建名字为MyEntity的数据库。
5、接下来就可以撸一段代码了。
到这里即将信息输入完成了,但是还差一步,细心的小伙伴应该想到了,都没有数据库,这添加到哪去啊。因此下面这一步也是不可少的。
6、在App.Config中,有一个名字为MyEntity的配置字符串,这里我们需要修改成我们想要的服务器名称、数据库名和登录信息。
点击运行后就会生成相应的数据库还有表啦。
表已经生成了,数据也添加进去了。
通过上面的例子可以看到,使用空的CodeFirst模型设计数据库是很方便的,我们不需要关注数据库的使用方法,只需按照套路建实体类,声明字段,然后操作其对象,就可以生成数据库和表啦。因此这种方式是很适合数据库的迁移的,只需把程序拷到另一台电脑上运行一下就OK了。