结合EF5.0讲MVC4(四)--将我们的程序改成数据库优先模式
2013-03-15 11:18
211 查看
一、在MSSQL2008R2中创建数据库
首先,我们需要在MSSQL2008R2中创建一个名为Movie的数据库,具体的参数这里不讲,默认即可。然后【新建查询】。
因为在我们之前的代码中,我们已经通过code first创建好了我们需要使用的数据库和表,所以我们只需要将这些表结构倒出来然后放到刚刚的新建查询里去执行就可以了。由于先前的库在localdb中,所以,我们需要在vs中打开localdb的连接。
然后在表名上右键选择【打开表定义】,获得创建表的T-SQL语句。然后拷贝T-SQL语句到新建查询窗口。以此类推,将三个表的创建语句都拷贝到MSSQL2008R2中,在新建查询里,看起来应该是这样的:
在这里面,大家会发现,我优化了数据类型的长度,在code first中,字符串类型的长度都是MAX,我在这里依据实际情况稍加了修改。
然后点击【执行】创建数据库表。创建完成之后,我们做后续的工作。
二、添加ADO.NET实体数据模型
我们在【Models】文件夹上右键选择【添加】--【新建项】,打开如图所示窗口
点击左侧导航中的【数据】,然后选择右侧的【ADO.NET Entity Data Model】,(我这里是英文版的),名称叫做Movie.edmx。接下来出现如下对话框
选择从数据库更新
创建一个新的连接到我们MSSQL2008R2中的Movie库。
创建一个新的连接到我们MSSQL2008R2中的Movie库。
添加我们需要导入到实体模型中的表、视图和存储过程等。
点击完成之后,可能会出现“代码会威胁电脑安全”之类的警告,这里选择依然保存就可以了。然后我们的【Models】文件夹就变成了这个样子:
生成项目,如果没有错误,继续下面的操作。
三、修改数据上下文
需要注意的是,我们在前几节当中做的都是code first,所以有些代码在数据库优先下没有必要存在,这里我们需要做一下修改。首先是数据上下文文件MovieContext。我们注释掉OnModelCreating()方法。
//protected override void OnModelCreating(DbModelBuilder modelBuilder) //{ // //base.OnModelCreating(modelBuilder); // modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); //}
因为这里我们换了数据库,那么数据库连接字符串也要有相应的改变。我们可以到web.config当中看一眼,是不是多了一个连接,而这个连接正是我们创建实体模型是使用到的。既然已经有了连接串,我们需要做的工作是告诉DbContext我们要使用哪个连接串,这个在前面的章节中已经讲到过,直接看代码
private const string CONNECTION_STRING = "name=movieEntities"; public MovieContext() : base(CONNECTION_STRING) { }
做完这些之后,我们的MovieContext看起来就成了这个样子:
public class MovieContext:DbContext
{
private const string CONNECTION_STRING = "name=movieEntities";
public MovieContext() : base(CONNECTION_STRING) { }
public DbSet<Movie> Movie { get; set; }
public DbSet<Author> Authors { get; set; }
public DbSet<OperLog> OperLog { get; set; }
//protected override void OnModelCreating(DbModelBuilder modelBuilder) //{ // //base.OnModelCreating(modelBuilder); // modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); //}
}
接下来,还有一次要进行修改,那就是Global.asax,因为在这里面我们注册了一个数据库初始化的操作 ,我们需要将这行代码注释掉或者删掉。
//Database.SetInitializer<MovieContext>(new Initializer());
做完这些之后,生成,没有错误之后就可以按F5看一下运行效果了。当然因为我们换了新库,数据是没有了的,需要我们再添加一些数据进去。
四、运行效果
数据库里
需要注意:在EF4.1中,创建实体模型时,不会自动创建代码生成项,需要我们在模型界面上右键,选择【添加代码生成项】,这样就不会报“the type '' was not mapped”错误了。
相关文章推荐
- 结合EF5.0讲MVC4(三)--为我们的程序添加过滤器
- 结合EF5.0讲MVC4(二)--为先前程序添加查询及主外键关系
- 结合EF5.0讲MVC4(二)--为先前程序添加查询及主外键关系
- MVVM模式下,ViewModel和View,Model有什么区别 摘自正美的5群 Model:很简单,就是业务逻辑相关的数据对象,通常从数据库映射而来,我们可以说是与数据库对应的model。
- 结合数据库的控制台程序
- Android - 页面切换,动画播放,程序锁,Activity启动模式,利用内容观察者同步数据库变化
- EF数据库优先模式(三)
- 创建第一个ASP.NET CORE程序 使用DBFirst模式连接数据库
- 结合EF5.0讲MVC4(一)--创建一个MVC4应用程序
- 结合EF5.0讲MVC4(二)
- 数据库实例创建好后,用plsql登录居然提示ora-12526监听程序:所有适用例程都处于受限模式的问题
- j2EE 使用DAO模式对数据库操作(jsp程序)
- 为了程序的健壮性,我们可以使用空对象模式
- 微信小程序和野狗数据库结合
- j2EE 使用DAO模式对数据库操作(jsp程序)
- 【读书笔记】用反射+抽象工程模式实现多数据库的访问程序
- Qt学习之------如何探索带mysql的程序(但是并没有给我们数据库结构)
- MVC 数据库优先模式
- NDatabase 入门,简单使用 增删改查。让NDatabase带你脱离ADO.net,各种SQL 语句,各种DBMS,各种CRM,IOC之类的烦恼。我们也不需要仓库设计模式了,你妹的。不要表了,不要设计数据库字段了。就这样!
- 大话设计模式之策略模式(结合简单工厂),程序完善过程蕴含智慧