使用ASP.NET MVC+Entity Framework快速搭建系统
详细资料: 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、上面出现的一些小问题,基本上是由于不细心造成的,所以在接下来的学习中一定要细心
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快速搭建系统的更多相关文章
- 使用ASP.NET MVC+Entity Framework快速搭建博客系统
学习 ASP.NET MVC 也有一段时间了,打算弄个小程序练练手,做为学习过程中的记录和分享. 首先,得确定需求,木有需求的话,那还搞个毛线呀!嗯……大致思考了一下,终于得出如下需求: 1.能自定义 ...
- ASP.NET MVC - Entity Framework
ASP.NET MVC - Entity Framework 实体关系 关系是某个实体(表)的一条记录对应于另一个实体(表)的一条或多条记录. 一对多关系 单方面的包含关系称为一对多,而一对多和一对一 ...
- ASP.NET MVC项目框架快速搭建实战
MVC项目搭建笔记---- 项目框架采用ASP.NET MVC+Entity Framwork+Spring.Net等技术搭建,采用”Domain Model as View Model“的MVC开发 ...
- Asp.net Mvc Entity Framework Code First 数据库迁移
1.创建Mvc项目 2.安装Entity Framework 2.1.如下图打开程序包管理器控制台: 2.2.输入命令Install-Package EntityFramework,即可安装Entit ...
- ASP.NET MVC+Entity Framework 访问数据库
Entity Framework 4.1支持代码优先(code first)编程模式:即可以先创建模型类,然后通过配置在EF4.1下动态生成数据库. 下面演示两种情形: 1.代码优先模式下,asp.n ...
- ASP.NET MVC+Entity Framework 4.1访问数据库
Entity Framework 4.1支持代码优先(code first)编程模式:即可以先创建模型类,然后通过配置在EF4.1下动态生成数据库. 下面演示两种情形: 1.代码优先模式下,asp.n ...
- ASP.NET MVC+Entity Framework code first 迁移
再来一张,选择 MVC 模版,其他的没选过,不会用 =_=!! 身份验证用个人用户账户,这个是为了偷懒,话说 ASP.NET Identity 还是很给力的,不用白不用 ^_^~ 点击确定之后,会看 ...
- ABP 教程文档 1-1 手把手引进门之 ASP.NET Core & Entity Framework Core(官方教程翻译版 版本3.2.5)
本文是ABP官方文档翻译版,翻译基于 3.2.5 版本 官方文档分四部分 一. 教程文档 二.ABP 框架 三.zero 模块 四.其他(中文翻译资源) 本篇是第一部分的第一篇. 第一部分分三篇 1- ...
- Entity Framework快速入门--ModelFirst
Entity Framework带给我们的不仅仅是操作上的方便,而且使用上也很是考虑了用户的友好交互,EF4.0与vs2010的完美融合也是我们选择它的一个理由吧.相比Nhibernate微软这方面做 ...
随机推荐
- ZeroMQ API(四) 套接字
1.创建一个套接字 1.1 zmq_socket(3) 1.1.1 名称 zmq_socket - 创建ZMQ套接字 1.1.2 概要 void * zmq_socket(void * context ...
- 使用object_box遇到的崩溃 java.lang.UnsatisfiedLinkError:
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/ ...
- Linux服务-搭建NFS
任务目标:二进制安装nfs,作为共享存储挂载在三台web的网站根目录下,在任意一台web上修改的结果,其余两台都可以看到 首先来安装NFS服务,NFS顾名思义,就是极品飞车,哦不!是网络文件服务的意思 ...
- A - ACM Computer Factory(网络流)
题目链接:https://cn.vjudge.net/contest/68128#problem/A 反思:注意拆点,否则的话节点就没用了,还有注意源点和汇点的赋值. AC代码: #include&l ...
- 【多视图几何】TUM 课程 第1章 数学基础:线性代数
在 YouTube 上找到了慕尼黑工业大学(Technische Universitaet München)计算机视觉组 Daniel Cremers 教授的 Multiple View Geomet ...
- java所搜引擎slor学习笔记(一)
java搜索引擎有很多,比较熟悉的就是slor和lucene. luncene: 概念:全文检索是计算机程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置.当用户查 ...
- 多校 HDU 6397 Character Encoding (容斥)
题意:在0~n-1个数里选m个数和为k,数字可以重复选: 如果是在m个xi>0的情况下就相当于是将k个球分割成m块,那么很明显就是隔板法插空,不能为0的条件限制下一共k-1个位置可以选择插入隔板 ...
- 20165230 2017-2018-2 《Java程序设计》第9周学习总结
20165230 2017-2018-2 <Java程序设计>第9周学习总结 教材学习内容总结 第十二章 java网络编程 学习了用于网络编程的类,了解URL.Socket.InetAdd ...
- codepage 和 charset
codepage:简单地说,这是程序用于对字符进行编码的一个表.代码页是服务器的事情. 常见的三种codepage 简体中文 : 936 繁体中文 : 950 UTF-8 : 65001 如果你不想用 ...
- Centos7安装FTP突然无法登录
vi /etc/pam.d/vsftpd //注释掉auth required pam_shells.so session optional pam_keyinit.so force revokeau ...