MVC中code first数据库的生成
来源:互联网 发布:apt-get install mysql 编辑:程序博客网 时间:2024/06/05 04:05
在上一篇文章中,我们已经把Model层搭建好了,那么接上来我就为大家讲一下怎么通过code first创建对应的数据库:
1:首先我们建一个类继承Dbcontext,用于对数据库的操作
在DAL层中建一个类名字可以随意,我图方便也命名成了DbContext
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Data.Entity;using System.Data.Entity.ModelConfiguration.Conventions;using Model;namespace DAl{ public class DbContext : System.Data.Entity.DbContext { private static string dbName = System.Configuration.ConfigurationManager.ConnectionStrings["conn"].ToString();//这个有另一中写的方式个人习惯这样 public DbContext() : base(dbName) { Database.SetInitializer<DbContext>(new CreateDatabaseIfNotExists<DbContext>()); } protected override void OnModelCreating(DbModelBuilder modelBuilder) { //表名不用复数形式 modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); } //放置的是数据库对应的实体对象 public DbSet<IndexActice> IndexActice { get; set; } }}
2:既然上文中使用webconfig的链接字符串那么就先到webconfig中设置一下
<connectionStrings> <add name="conn" connectionString="Data Source=.;User ID=sa;database=数据名;Password=.." /> </connectionStrings>
3:增加一个类用于填充数据库数据
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Data.Entity;using Model;namespace DAl{ public class BaseInitializer : DropCreateDatabaseIfModelChanges<DbContext> { protected override void Seed(DbContext context) { var Index = new List<IndexActice> { new IndexActice{acticeName="小明",remarkMes="sdsadsadsd",userID=12545}, new IndexActice{acticeName="小ds",remarkMes="dsaaa",userID=5522} }; Index.ForEach(s => context.IndexActice.Add(s)); context.SaveChanges(); } }}
4:在控制器中初始化这个model的数据
//需要添加引用using System.Data.Entity; public ActionResult acticeMes() { DAl.DbContext db = new DAl.DbContext(); Database.SetInitializer<DAl.DbContext>(new BaseInitializer()); return View(db.IndexActice.ToList()); }
5:在视图中调用数据
@{ ViewBag.Title = "acticeMes"; Layout = "";}@using Model;@model IEnumerable<IndexActice>@foreach (var a in Model){ <h2>@a.ID</h2> <h2>@a.acticeName</h2> <h2>@a.acticeMes</h2> <h2>@a.userID</h2> }
数据库到这里就已经建好了但有一个问题是如果model成的结构改变,那么就必须删除除数据库重建,这样会造成的数据的丢失!解决的办法是把codefirst的数据迁移打开:
1:打开程序控制台:输入Enable-Migrations,运行结束后会自动生成一个Migrations文件夹,打开里面的Configuration.cs类找到下面的方法把AutomaticMigrationsEnabled 打开
public Configuration() { AutomaticMigrationsEnabled = true; ContextKey = "DAL.DbContext"; }
2:如果有需要有model结构改变时在程序控制台中输入:Update-Database -Force,这样数据库的结构会改变,而且数据不会丢失!
阅读全文
0 0
- MVC中code first数据库的生成
- MVC中code first方式开发,数据库的生成与更新(Ef6)
- MVC中code first方式开发,数据库的生成与更新(Ef6)
- MVC中code first方式开发,数据库的生成与更新(Ef6)
- Asp.net MVC + MySQl + EF Code First 不能自动生成数据库
- MVC 5 的 EF6 Code First 入门
- EF Code First中数据库位置设置
- [05] 使用 MVC 5 的 EF6 Code First 入门 系列:MVC程序中实体框架的Code First迁移和部署
- asp.net mvc Code First模式下迁移更新数据库
- 如何控制code-first生成的数据库表名的单复数
- 使用code first生成数据库并使用三层架构设计简单的登录程序
- 在MVC 中使用code first迁移步骤
- code first数据库迁移
- mvc EF code first 学习
- MVC Code First (代码先行)
- code first EF mvc 使用
- ASP.Net MVC连接MySQL和Code First的使用
- 实体框架 (EF) 入门 => 二、在全新的数据库中使用 Code First
- centOS 7防火墙
- 065、066、067-C++
- GDAL2.x与1.x的主要变化比较(以C++为例说明)
- 使用sublime server启动本地服务器进行调试
- Android检测手机是否安装某个应用
- MVC中code first数据库的生成
- L0、L1与L2范数、核范数
- Spark集群任务提交
- 协方差的意义和计算公式
- 关于Yii2 Datetime Formatter的timezone问题
- web.xml 中spring-servlet.xml 和 application.xml 配置位置及含义
- ARM linux SMP
- HTTP500.19 iis7、8 不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况
- 织梦模板之家:如何安装更换织梦cms模板