再来一张,选择 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 MVC+Entity Framework code first 迁移的更多相关文章

  1. Asp.net Mvc Entity Framework Code First 数据库迁移

    1.创建Mvc项目 2.安装Entity Framework 2.1.如下图打开程序包管理器控制台: 2.2.输入命令Install-Package EntityFramework,即可安装Entit ...

  2. 使用ASP.NET MVC+Entity Framework快速搭建系统

    详细资料: http://www.cnblogs.com/dingfangbo/p/5771741.html 学习 ASP.NET MVC 也有一段时间了,打算弄个小程序练练手,做为学习过程中的记录和 ...

  3. ASP.NET MVC - Entity Framework

    ASP.NET MVC - Entity Framework 实体关系 关系是某个实体(表)的一条记录对应于另一个实体(表)的一条或多条记录. 一对多关系 单方面的包含关系称为一对多,而一对多和一对一 ...

  4. Entity Framework Code First 迁移

    Entity Framework CodeFirst数据迁移 http://www.cnblogs.com/aehyok/p/3325459.html Entity Framework Code Fi ...

  5. ASP.NET MVC+Entity Framework 访问数据库

    Entity Framework 4.1支持代码优先(code first)编程模式:即可以先创建模型类,然后通过配置在EF4.1下动态生成数据库. 下面演示两种情形: 1.代码优先模式下,asp.n ...

  6. 使用ASP.NET MVC+Entity Framework快速搭建博客系统

    学习 ASP.NET MVC 也有一段时间了,打算弄个小程序练练手,做为学习过程中的记录和分享. 首先,得确定需求,木有需求的话,那还搞个毛线呀!嗯……大致思考了一下,终于得出如下需求: 1.能自定义 ...

  7. ASP.NET MVC+Entity Framework 4.1访问数据库

    Entity Framework 4.1支持代码优先(code first)编程模式:即可以先创建模型类,然后通过配置在EF4.1下动态生成数据库. 下面演示两种情形: 1.代码优先模式下,asp.n ...

  8. Entity Framework Code First迁移基本面拾遗

    项目中用到了EF Code First和迁移,但发现有些方面似懂非懂.比如:如何在迁移文件中控制迁移过程?如果在迁移文件中执行SQL语句?如何使用Update-Database的其它参数?数据库在生产 ...

  9. Entity Framework Code First 迁移数据库

    新版EF,系统实现过程中如果对Model进行更改,队形修改数据库并不能正常运行项目,需要借助Code First 手动迁移数据库 首先启用迁移,允许迁移Context Tools->Librar ...

随机推荐

  1. clion ctrl+鼠标左键不能调到函数实现

    问题:ctrl+鼠标左键只能在函数定义和申明之间跳转,不能跳转到implement,如果按ctrl+shift+B会报“no implement”. 解决:更改CMakeList文件,更改版本号. c ...

  2. 【CS224n】Lecture8 Notes

    注:这是2017年课程的lecture8.一直都在用RNN,但是对它内部的构造不甚了解,所以这次花了一个下午加一个晚上看了CS224n中关于RNN的推导,不敢说融会贯通,算是比以前清楚多了.做个笔记, ...

  3. Jmeter工具功能介绍

    可以去官方学习:http://jmeter.apache.org/ 1.可以修改语言 2.部分图标功能 新建 打开一个jmeter脚本 保存一个jmeter脚本 剪切 复制 粘贴 展开目录树 收起目录 ...

  4. git 项目最常用命令总结

    本文为博主原创,未经允许不得转载: 1.查看git基础配置信息 1.查看用户名和邮箱地址 git config user.name   git config user.email 2.修改用户名和邮箱 ...

  5. [转]Oracle 查询表外键相关信息

    原文地址:https://www.csdn.net/gather_27/MtTaUgxsNzYxMi1ibG9n.html 查找表的外键(包括名称,引用表的表名和对应的键名,下面是分成多步查询): s ...

  6. DateUtil(2)

    import java.sql.Timestamp; import java.text.ParseException; import java.text.SimpleDateFormat; impor ...

  7. Freemarker语法收集

    1. 取数组第一项 <#if subModelList?? && (subModelList?size > 0)> <#assign subFirst = su ...

  8. EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器前端源码重构(六)- webpack-dev-server 自适应支持手机端访问

    关于EasyDSS EasyDSS商用流媒体服务器解决方案是一套集流媒体点播.转码与管理.直播.录像.检索.时移回看于一体的一套完整的商用流媒体服务器解决方案,EasyDSS高性能RTMP流媒体服务器 ...

  9. 采用EasyDSS视频点播服务器搭建企业私有化的音视频多媒体、短视频、视频服务网站与管理后台

    最近有越来越多的用户咨询关于视频点播的功能,主要需求就是集中于如何搭建专属的私有化视频点播平台: 实现的功能类似于,对应自身拥有的视频文件,需要发布到一个网站,其他用户都可以实现点播观看. 针对于类似 ...

  10. CenterOS7 安装Mysql8 及安装会遇到的问题

    1.下载 MySQL 所需要的安装包 网址:https://dev.mysql.com/downloads/mysql/ 2.Select Operating System: 选择 Red Hat , ...