EF 增删改

Posted chenyishi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EF 增删改相关的知识,希望对你有一定的参考价值。

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了。

EF实体模型的用法远不止这些这么简单,还可以对表设置外键,进行类型映射等,现阶段水平不够强,先把会的记录分享给小伙伴们,这些以后学会了再分享给大家,有一些不足的地方还希望各位小伙伴能够指正,互帮互助互相学习是再好不过啦 ^_^

顺便提一句,使用CodeFirst不是万能的,比如CodeFirst从数据库生成模型,对于有些默认当前时间的字段,在代码中不会体现出来,还是需要手动添加DateTime.Now的。因此,工具虽好,可不要贪心哦,现在已经挺好用的了~~~This is enough.

以上是关于EF 增删改的主要内容,如果未能解决你的问题,请参考以下文章

ef 增删改教程

csharp EF增删改查封装

csharp EF增删改查封装

EF的增删改查

EF增删改查+使用Expression进行排序分页

使用EF框架实现增删改查操作