要专业系统地学习EF推荐《你必须掌握的Entity Framework 6.x与Core 2.0》。这本书作者(汪鹏,Jeffcky)的博客:https://www.cnblogs.com/CreateMyself/
今天继续学习EF,但是看来看去,实在是感觉不爽啊,因为你不知道源码里面到底是什么回事,我只能去猜去想象,要是有源码给我看几个单词也好啊。
百度吧。还是找到几篇博客,看上去不是很难弄。
https://www.cnblogs.com/michaellfx/p/3806857.html
https://www.cnblogs.com/zhesong/p/EF6Debug.html
先下载EF的源码:https://github.com/aspnet/EntityFramework6 我不知道这是6.几的版本,也不知道这是不是官方的
创建自己的控制台项目,引入两个程序集,并且控制台程序添加对这两个程序集的引用, 把这两个程序集的强签名去掉,重新生成解决方案
这里要注意,我们只引入了EntityFramework和EntityFramework.SqlServer,如果我们想要用数据迁移是不行的,可能要还要引入其他的程序集,我做了,没有成功。
所以,我们只能自己手动地去创建数据库,并且数据模型的配置也要写,并且你要保证你的配置和手写的数据库是完全匹配的。
你可以在另一个项目中把model、配置都写好,测试没问题,拿到这个项目中复制。
我的三个model
View Code
配置如下
View Code
查询数据,打印看看
View Code
报错,找不到程序集
我们把源码中的这里改成null
app.config配置文件中也改一下,pulicKeyToken改成null
View Code
然后打印数据,出来了
这里要注意一个问题,EFDbContext中要一次性写好,不能运行了项目,再对EFDbContext进行改动,这样他会说你的文件改动要执行数据迁移,更新数据库。但是我们刚刚就强调了,只是引入了两个程序集,无法提供数据迁移的功能
我开始就是这样,EFDbContext中的配置没有写,可能是EF无法匹配到数据库,一直进行它的默认连接,即使我给他指定了连接字符串(我要求他连接到_201901202.EFDbContext这个数据库,但是我的配置和数据不匹配,他就连接默认数据库:命名空间+上下文类名)
然后我改好EFDbContext,以为这下终于万无一失,但是他说支持“EFDbContext”上下文的模型发生了更改。考虑使用代码优先迁移来更新数据库。可是我迁移用不了啊!
所以我又写了一个EFDbContext2,把代码复制过来,这样终于行了,连接到指定的数据源了。
https://www.cnblogs.com/jinshan-go/p/10296665.html