EF Code First之困扰
Code First自动更新数据库有几种方法
Code First什么都不做
Database.SetInitializer<ShopContext>(null);
发布网站的话一般要在Application_Start方法里加上这句,发布后不需要Code First了。
Code First总是重建数据库并重设数据库种子
Database.SetInitializer(new DropCreateDatabaseAlways<MyContext, DAL.Configuration>());
Code First仅在模型更改时重建数据库并重设数据库种子
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<MyContext, DAL.Configuration>());
可是这几种在开发阶段都不适合,因为我并不希望重建数据库,只是想增量更新数据库,于是又找到一种
Code First增量更新数据库并增量更新数据库种子
Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyContext, DAL.Migrations.Configuration>());
其中DAL.Migrations.Configuration如下
public class Configuration : DbMigrationsConfiguration<MyContext>
{
public Configuration()
{
//允许代码自动迁移数据库
AutomaticMigrationsEnabled = true;
//允许自动迁移时数据丢失(如删除列)
AutomaticMigrationDataLossAllowed = true;
} protected override void Seed(MyContext context)
{
context.Account.AddOrUpdate(o => o.AccountName, new SH_Account
{
AccountName = "admin",
NickName = "管理员",
AccountPwd = "",
Email = "4564589@qq.com",
Phone = ""
});
}
}
可是,我发现DbMigrationsConfiguration依然有不少问题,比如修改字符串长度限制的话执行增量更新数据库是会报错的,去除带外键的字段加带外键的字段也容易报错,并且一旦出错基本就只能删除数据库重新执行了,也就是说DbMigrationsConfiguration并不是很可靠,谁知道怎么解决这个困扰呢。。。
EF Code First之困扰的更多相关文章
- EF Code First Migrations数据库迁移
1.EF Code First创建数据库 新建控制台应用程序Portal,通过程序包管理器控制台添加EntityFramework. 在程序包管理器控制台中执行以下语句,安装EntityFramewo ...
- EF Code First学习系列
EF Model First在实际工作中基本用不到,前段时间学了一下,大概的了解一下.现在开始学习Code First这种方式.这也是在实际工作中用到最多的方式. 下面先给出一些目录: 1.什么是Co ...
- EF和MVC系列文章导航:EF Code First、DbContext、MVC
对于之前一直使用webForm服务器控件.手写ado.net操作数据库的同学,突然来了EF和MVC,好多新概念泉涌而出,的确犹如当头一棒不知所措.本系列文章可以帮助新手入门并熟练使用EF和MVC,有了 ...
- EF Code First 初体验
Code First 顾名思义就是先代码,再由代码生成数据库的开发方式. 废话不多说,直接来一发看看:在VS2010里新建一个空白解决方案,再依次添加两个类库项目:Model.DataAccess和一 ...
- 【极力分享】[C#/.NET]Entity Framework(EF) Code First 多对多关系的实体增,删,改,查操作全程详细示例【转载自https://segmentfault.com/a/1190000004152660】
[C#/.NET]Entity Framework(EF) Code First 多对多关系的实体增,删,改,查操作全程详细示例 本文我们来学习一下在Entity Framework中使用Cont ...
- EF Code First 主键对应多个外键
这是一位朋友提出的疑问,EF 映射主键可以对应多个外键吗?如果外键设置级联删除会发生什么情况?下面做一个测试,示例实体代码: public class Blog { public Blog() { P ...
- 【记录】EF Code First 实体关联,如何添加、修改实体?
在使用 EF Code First 的时候,我们经常会对项目中的 Entry 进行一对多.多对多的映射配置,这时候就会产生主实体和子实体的概念,我们在添加.修改他们的时候,有时候会产生一些问题,比如添 ...
- EF Code First 一对多、多对多关联,如何加载子集合?
应用场景 先简单描述一下标题的意思:使用 EF Code First 映射配置 Entity 之间的关系,可能是一对多关系,也可能是多对多关系,那如何加载 Entity 下关联的 ICollectio ...
- 从零开始,搭建博客系统MVC5+EF6搭建框架(1),EF Code frist、实现泛型数据仓储以及业务逻辑
前言 从上篇30岁找份程序员的工作(伪程序员的独白),文章开始,我说过我要用我自学的技术,来搭建一个博客系统,也希望大家给点意见,另外我很感谢博客园的各位朋友们,对我那篇算是自我阶段总结文章 ...
随机推荐
- javascript创建对象的一些方式
通过创建一个Object实例 var person = new Object(); person.name = "zhouquan"; person.age = 21; perso ...
- bash 语法使用
1.定义函数时,不需要使用function作为函数的命名. 函数不需要形参. 函数名不能以数字作为开头 main() { in ) 1_start ;; ) 1_start 5_start ;; ) ...
- 修改mysql默认字符编码出现的Job failed to start解决方法
5.5以后的版本对字符编码方式修改的办法,原来在[mysqld]下的修改已经发生了变化,正确方式如下: [mysqld]下添加的应该为: character-set-server=utf8 colla ...
- PYTHON 函数的动态参数
#普通参数示例 def func(args): print(args) func(123456) #执行结果为123456 如果给多个参数,就会报错 #动态参数示例 def func(*args): ...
- Servlet 之 GenericServlet
我们都知道javaweb中servlet的三大组件 servlet filter listener 实现动态资源的 是可以继承 Servlet接口,或者集成GenericServlet .Http ...
- Huffman树实现_详细注释
//最优二叉树 #include <iostream> #include <iomanip> using namespace std; //定义结点类型 //[weight | ...
- Jmeter发送soap请求
1.新建线程组-添加SOAP/XML-RPC Request 2.我们以天气预报接口为例,http://ws.webxml.com.cn/WebServices/WeatherWS.asmx,选择最后 ...
- C#回顾 - 8.利用反射动态创建对象
拿微信消息返回的示例数据实验 var data = "<xml><ToUserName><![CDATA[toUser]]></ToUserName ...
- chrome 不支持window.webkitNotifications.createNotification消息通知API了
今天惊奇的发现,chrome22里已经不支持window.webkitNotifications.createHTMLNotification方法了: 但是,在chrome extension里还可以 ...
- 《图形学》实验六:中点Bresenham算法画圆
开发环境: VC++6.0,OpenGL 实验内容: 使用中点Bresenham算法画圆. 实验结果: 代码: #include <gl/glut.h> #define WIDTH 500 ...