EntityFramework

第一次EF使用经历

我EF用的比较晚,上来就是6.1.3.
所以这里只写这个版本的EF.

可配置项

配置在web.config中的数据库连接串.
圈子中的EF,配置项在Yingqi.Infrastructure的persistence文件夹下:
Configuration类,配置Developing方法的返回值将决定是否开启Develop模式.
AutoMigration类,配置是否开启自动迁移和是否允许迁移过程中数据损失.

实体注册

圈子中的数据实体绑定是重写了DbContext的OnModelCreating方法,直接在这里通过IOC容器将所有的
继承自IModelProvider接口的实体类一次注入.
所以,这里强行DDD导致我无法将自动迁移改造为手动迁移,除非做出巨大的改动.

数据迁移

quanzi中,只有自动迁移的模式.
在这个模式下,请一定要按照Base模型考虑清楚具体的数据模型改变.
一定要人工预估清楚具体的更改,否则自动迁移会给你带来巨大麻烦.
然后,按照数据库的改变,编写对应的sql,并在正式库上执行.

在后续项目中使用EF

可配置项

配置在web.config中的数据库连接串.
以及配置Migrations文件夹下的Configration.
就不再采用自动迁移了.

实体注册

直接在DbContext类中,写下具体的DbSet<TEntity> EntityName{get;set;},所有数据表都写在这里.
这里改变了想法,放弃了DDD中的持久化无关性,从而认为,一定会有一个层面,知道所有的数据库细节.

数据迁移

采用手工迁移方案.
主要常用的手工迁移命令如下:
首先,添加迁移文件夹以及配置类
然后,在程序包管理控制台 输入Add-Migration,参数有很多,主要包括程序集名称,数据库连接串,是否强制.详见MSDN
运行成功之后会生成一个迁移历史文件.里面有C#代码描述的数据库变化.
之后输入 Update-Database ,具体参数跟Add-Migration类似.可以输入-script,生成脚本,放到远程(生产环境)执行.不输入则修改当前连接串

推荐阅读更多精彩内容