详细资料: http://www.cnblogs.com/dingfangbo/p/5771741.html

学习 ASP.NET MVC 也有一段时间了,打算弄个小程序练练手,做为学习过程中的记录和分享。

首先,得确定需求,木有需求的话,那还搞个毛线呀!嗯……大致思考了一下

OK!就这样,先从简单的开始(其实是复杂的不会做),后面有需要再添加(希望水平能达到)。功能确定了,那么改确定要做成什么样子的了。先和度娘商量一下先……

终于在我的淫威之下,度娘交出了一个比较简洁的,源网站在这里(表示感谢),被小弟阉割了之后效果如下图:

接下来就开始编码了么?嗯!开始吧!打开心爱的VS2013,建立一个web项目,用 .net framework4.5.1 框架,这个是我能用的最新的了,为什么用最新的呢?因为……喜欢,这就够了!(个人练习,用什么都无所谓啦!!!)。解决方案名称为 ShowPin 项目名称为 ShowPin.Web

再来一张,选择 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

接下来要做的事就是添加内容了,不用多久我就会升职加薪,当上总经理,出任CEO,赢取白富美,走上人生巅峰!想想还有点小激动~~

使用ASP.NET MVC+Entity Framework快速搭建博客系统,布布扣,bubuko.com

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

原文:http://www.cnblogs.com/vin-c/p/3731068.html

使用ASP.NET MVC+Entity Framework快速搭建系统的更多相关文章

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

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

  2. ASP.NET MVC - Entity Framework

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

  3. ASP.NET MVC项目框架快速搭建实战

    MVC项目搭建笔记---- 项目框架采用ASP.NET MVC+Entity Framwork+Spring.Net等技术搭建,采用”Domain Model as View Model“的MVC开发 ...

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

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

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

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

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

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

  7. ASP.NET MVC+Entity Framework code first 迁移

    再来一张,选择 MVC 模版,其他的没选过,不会用 =_=!! 身份验证用个人用户账户,这个是为了偷懒,话说 ASP.NET Identity  还是很给力的,不用白不用 ^_^~ 点击确定之后,会看 ...

  8. ABP 教程文档 1-1 手把手引进门之 ASP.NET Core & Entity Framework Core(官方教程翻译版 版本3.2.5)

    本文是ABP官方文档翻译版,翻译基于 3.2.5 版本 官方文档分四部分 一. 教程文档 二.ABP 框架 三.zero 模块 四.其他(中文翻译资源) 本篇是第一部分的第一篇. 第一部分分三篇 1- ...

  9. Entity Framework快速入门--ModelFirst

    Entity Framework带给我们的不仅仅是操作上的方便,而且使用上也很是考虑了用户的友好交互,EF4.0与vs2010的完美融合也是我们选择它的一个理由吧.相比Nhibernate微软这方面做 ...

随机推荐

  1. zookeeper系列之:独立模式部署zookeeper服务

    一.简述 独立模式是部署zookeeper服务的三种模式中最简单和最基础的模式,只需一台机器即可,独立模式仅适用于学习,开发和生产都不建议使用独立模式.本文介绍以独立模式部署zookeeper服务器的 ...

  2. What Does “Neurons that Fire Together Wire Together” Mean?

    What Does “Neurons that Fire Together Wire Together” Mean? I’ve heard the phrase “neurons that fire ...

  3. Java并发编程原理与实战三十三:同步容器与并发容器

    1.什么叫容器? ----->数组,对象,集合等等都是容器.   2.什么叫同步容器? ----->Vector,ArrayList,HashMap等等.   3.在多线程环境下,为什么不 ...

  4. 说说JavaScript中的事件模型

    1.javascript中为元素添加事件处理程序的方法有以下几种方式,可以为javascript元素添加事件处理程序 (1) 直接将事件处理代码写在html中(2) 定义一个函数,赋值给html元素的 ...

  5. javascript 中检测数据类型的方法

    typeof 检测数据类型 javascript 中检测数据类型有好几种,其中最简单的一种是 typeof 方式.typeof 方法返回的结果是一个字符串.typeof 的用法如下: typeof v ...

  6. 翻译:CommonJS的wiki

    CommonJS的wiki资料原文 Modules/AsynchronousDefinition 异步定义的模块(国内一般叫AMD模块定义) STATUS: PROPOSAL 现状:提案 Implem ...

  7. Integer to Roman & Roman to Integer

    Integer to Roman Given an integer, convert it to a roman numeral. The number is guaranteed to be wit ...

  8. 用Qemu模拟vexpress-a9 (一) --- 搭建Linux kernel调试环境【转】

    转自:http://www.cnblogs.com/pengdonglin137/p/5023342.html#_label2 阅读目录(Content) 环境介绍: 下载Linux内核 安装arm的 ...

  9. mysql优化【转】

    最近听讲了博森瑞老师的mysql优化公开课,这个是我整理的笔记. 现在说一下mysql的内存和I/O方面的两个特点. 一. mysql内存特点: 1.  也有全局内存和每个session的内存(每个s ...

  10. 【Android开发日记】之入门篇(八)——Android数据存储(下)

    废话不多说了,紧接着来讲数据库的操作吧.Come On! 提到数据存储问题,数据库是不得不提的.数据库是用来存储关系型数据的不二利器.Android为开发者提供了强大的数据库支持,可以用来轻松地构造基 ...