ASP.NET MVC+Entity Framework code first 迁移
2017-02-16 10:22
741 查看
再来一张,选择 MVC 模版,其他的没选过,不会用 =_=!! 身份验证用个人用户账户,这个是为了偷懒,话说 ASP.NET Identity 还是很给力的,不用白不用 ^_^~
点击确定之后,会看到以下界面:
解决方案结构:
先更新一把先:
好吧,开工吧!!在Models目录下建立博客分类(Category)和博客(Post)两个类,代码贴在下面
Category:
using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace ShowPin.Web.Models { /// <summary> /// 分类 /// </summary> public class Category { public Category() { this.Posts = new List<Post>(); } /// <summary> /// 获取或设置分类标题 /// </summary> public string Title { get; set; } /// <summary> /// 该分类下的内容集合 /// </summary> public virtual ICollection<Post> Posts { get; set; } } }
Post:
using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace ShowPin.Web.Models { /// <summary> /// 博文 /// </summary> public class Post { /// <summary> /// 获取或设置内容标题 /// </summary> public string Title { get; set; } /// <summary> /// 获取或设置内容 /// </summary> public string Content { get; set; } /// <summary> /// 获取或设置内容发布日期 /// </summary> public DateTime CreateDate { get; set; } /// <summary> /// 获取或设置点击数 /// </summary> public int hits { get; set; } /// <summary> /// 获取或设置分类ID /// </summary> public string CategoryId { get; set; } /// <summary> /// 获取或设置分类 /// </summary> public virtual Category Category { get; set; } } }
好了,接下来就是传说中的DBContext
ObjectContext:
using System; using System.Collections.Generic; using System.Data.Entity; using System.Linq; using System.Web; namespace ShowPin.Web.Models { /// <summary> /// 数据上下文 /// </summary> public class ObjectContext : DbContext { public ObjectContext() : base("ShowPinContext") { } /// <summary> /// 分类列表 /// </summary> public DbSet<Category> Categories { get; set; } /// <summary> /// 博文列表 /// </summary> public DbSet<Post> Posts { get; set; } } }
在 web.config 的 connectionStrings 节点添加如下代码:
<add name="ShowPinContext" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-ShowPin.Context;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-ShowPin.Context.mdf" providerName="System.Data.SqlClient" />
大概是这个样子的,看下面的图片
好吧,接下来就让用数据库迁移功能,让代码在数据库中表现出来。
下面这个就是“程序包管理控制台”
输入:Enable-Migrations 然后按下“回车”键
这个…… 出错了,唉……出师不利啊!!错误原因就是当前项目中存在两个上下文类型,SB VS 不知道要用哪个来生成数据库,所以……
输入:Enable-Migrations -ContextTypeName ShowPin.Web.Models.ObjectContext 再“回车”
又出错了=_=!!
模型生成过程中检测到一个或多个验证错误:
ShowPin.Web.Models.Category: : EntityType“Category”未定义键。请为该 EntityType 定义键。
ShowPin.Web.Models.Post: : EntityType“Post”未定义键。请为该 EntityType 定义键。
Categories: EntityType: EntitySet“Categories”基于未定义任何键的类型“Category”。
Posts: EntityType: EntitySet“Posts”基于未定义任何键的类型“Post”。
这个是因为没有定义主键,简单来说就是传说中的ID…… 在实体类上加上主键
/// <summary> /// 主键 /// </summary> public string Id { get; set; }
string 类型的主键,还是比较少见的。
再来一次,输入:Enable-Migrations -ContextTypeName ShowPin.Web.Models.ObjectContext 再“回车”
我是猴子请来的逗逼么??
再来一次吧!!
输入:Enable-Migrations -ContextTypeName ShowPin.Web.Models.ObjectContext -force 再“回车”
搞定了 哈哈哈哈哈……
他还生成了一些文件,来瞧瞧是什么东西。
多了一个 Migrations 目录,和 Configuration.cs 文件,这是个什么东西呢?先不管他。
接下来是对 Category 做 CRUD 操作,新建一个 Controller
点击确定之后,奇迹就出现了T T,在浏览器输入:http://localhost:10223/Category
地址是我的本地地址,请根据实际情况修改。
很遗憾,出错了!!!
因为之前启用数据库迁移之后,并没有让它更新,接下来就让它更新吧!!打开程序包管理器控制台,输入 Add-Migration ini “回车”
在 Migrations 目录下又多了个文件
是什么东西?先不管它,接着输入:Update-database
貌似成功了,看看 App_Data 目录
数据库生成好了,再刷新网页
终于成功了,哈哈……接着是 Post
大功告成!
来个小小的总结:
1、上面出现的一些小问题,基本上是由于不细心造成的,所以在接下来的学习中一定要细心
2、关于“程序包管理器控制台”的知识在这里和这里
3、上面的编码模式为 “代码优先”、“代码先现行”,英文比较好记 code first
相关资料:
http://msdn.microsoft.com/zh-cn/data/jj193542.aspx
http://www.cnblogs.com/qouoww/tag/Entity%20Framework/
4、数据库迁移的相关资料:
http://blog.csdn.net/vaivxuanzi/article/details/11633255
http://msdn.microsoft.com/zh-cn/data/jj554735.aspx、
相关文章推荐
- 创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表
- ASP.Net MVC极速开发:使用MVCScaffolding + EntityFramework CodeFirst
- 创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表
- [ASP.NET MVC]Entity Framework框架之CodeFirst模式学习笔记
- 创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表
- 【原】ASP.Net MVC极速开发:使用MVCScaffolding + EntityFramework CodeFirst
- asp.net mvc CodeFirst模式数据库迁移步骤详解
- ASP.NET MVC 3 (Entity Framework Code-First Development) (4/9)
- ASP.NET EntityFrameworkCore code first 多对多设计
- asp.net mvc Code First模式下迁移更新数据库
- ASP.NET MVC CodeFirst模式数据库迁移步骤
- ASP.NET MVC 3 (Entity Framework Code-First Development) (4/9)
- Asp.net Core中使用Entity Framework Core CodeFirst
- asp.net MVC Code First模式在 vs 程序包管理器控制台执行的数据迁移更新语句
- 使用EF Code First搭建一个简易ASP.NET MVC网站,允许数据库迁移
- ADO.NET Entity Framework CodeFirst 如何输出日志(EF4.3)
- ADO.NET Entity Framework CodeFirst 如何输出日志(EF 5.0)
- Asp.Net MVC 常用开发方式之EF Code First
- ASP.NET MVC+Entity Framework 4.1访问数据库
- ADO.NET Entity Framework CodeFirst 如何输出日志(EF 5.0)