EF笔记

给已存在的数据库添加迁移

Add-Migration -IgnoreChanges指令处理这个是相当简单的,当执行该命令时,EF会创建一个空的迁移,它会假设上下文和实体定义的模型和数据库是兼容的。

update-database 一旦通过运行这个迁移更新了数据库,数据库模式不会发生变化,但是会在_MigrationHistory表中添加一条新的数据来对应初次迁移。这个完成之后,我们就可以安全地切换到EF的迁移API来维护数据库模式变化了。

一些数据库系统不支持表名的首字母为下划线,EF允许开发者自定义该表名。

另一个想要解决的用例是为已存在的数据库创建实体类,然后不仅要给已存在的数据库添加EF,还要给已存在的软件添加。这个任务可以使用VS的Entity Framework Power Tools插件完成。一旦安装了该插件,在项目的右键菜单上会多个选项Reverse Engineer Code First(工程转换为Code First)。开发者需要做的是将这个工具指向想要使用EF支持的数据库,然后该工具会将数据库中的所有表转换为实体类、上下文和配置类。我们也可以使用Entity Framework Tools。这个工具集也支持从数据库生成Code First。为了使用这个功能,只需要从Add New Item对话框选择ADO.NET Entity Data Model,然后按向导步骤进行即可。

一个数据库,多个上下文

我们不必总是将映射到表的所有实体集合放到一个上下文里。使用多个DbContext类有很多优点。这种方式可能会减少启动时间,因为这个时间一般是和上下文第一次访问的集合的数量成比例的,也会减少每个上下文对开发者暴露的数据面。还有,它会帮助开发者将数据组织到数据模块中。当然,如果我们使用迁移,我们仍然需要一个包含每个集合或表的上下文,因为我们会使用这个上下文用于支持迁移。这是我们需要实际配置的唯一上下文。当我们使用多个上下文并在一个事务中将数据保存到多个上下文时,需要做一些额外的事情。每个SaveChanges调用都是事务的,但我们需要为所有的SaveChanges调用创建一个首要的事务。我们也许会发现,对于涉及多个模块的保存操作,将所有的集合放到单个大型的DbContext中是更简单的。

猜你喜欢

转载自blog.csdn.net/TIANDI0808/article/details/83827407
EF