使用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、上面出现的一些小问题,基本上是由于不细心造成的,所以在接下来的学习中一定要细心

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,赢取白富美,走上人生巅峰!想想还有点小激动~~

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

时间: 2024-10-10 10:56:44

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

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

学习 ASP.NET MVC 也有一段时间了,打算弄个小程序练练手,做为学习过程中的记录和分享. 首先,得确定需求,木有需求的话,那还搞个毛线呀!嗯--大致思考了一下,终于得出如下需求: 1.能自定义分类 2.能发文章 OK!就这样,先从简单的开始(其实是复杂的不会做),后面有需要再添加(希望水平能达到).功能确定了,那么改确定要做成什么样子的了.先和度娘商量一下先-- 终于在我的淫威之下,度娘交出了一个比较简洁的,源网站在这里(表示感谢),被小弟阉割了之后效果如下图: 接下来就开始编码了么?嗯

Asp.Net MVC Entity Framework

Asp.Net MVC 模型(使用Entity Framework创建模型类) - Part.1 这篇教程的目的是解释在创建ASP.NET MVC应用程序时,如何使用Microsoft Entity Framework来创建数据访问类.这篇教程假设你事先对Microsoft Entity Framework没有任何的了解.读完本篇教程,你将会理解如何使用Entity Framework来选择.插入.更新和删除数据库记录. Microsoft Entity Framework是一个对象关系映射(O

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

Entity Framework 4.1支持代码优先(code first)编程模式:即可以先创建模型类,然后通过配置在EF4.1下动态生成数据库. 下面演示两种情形: 1.代码优先模式下,asp.net mvc数据访问 2.传统模式,先创建数据库和表,配置连接字符串,再生成模型 第一种情况的步骤: (1)使用空模板,创建ASP.NET MVC3.0(或4.0)项目,假定项目名:MVC_Student 注意:创建完项目后,项目会自动引用EF4.1 (2)在Model文件夹下,创建数据库上下文类:

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

Entity Framework 4.1支持代码优先(code first)编程模式:即可以先创建模型类,然后通过配置在EF4.1下动态生成数据库. 下面演示两种情形: 1.代码优先模式下,asp.net mvc数据访问 2.传统模式,先创建数据库和表,配置连接字符串,再生成模型 第一种情况的步骤: (1)使用空模板,创建ASP.NET MVC3.0(或4.0)项目,假定项目名:MVC_Student 注意:创建完项目后,项目会自动引用EF4.1 (2)在Model文件夹下,创建数据库上下文类:

asp.net mvc entity framework 数据库 练习(一)

本文启发的思路来源于asp.net mvc 6 的entity framework,微软MSDN中的官方项目contoso university 虚构的数据库 原文链接如下: https://docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started/getting-started-with-ef-using-mvc/creating-an-entity-framework-data-model-for-an-asp-net-mvc-

Building a Web App with ASP.NET Core, MVC, Entity Framework Core, Bootstrap, and Angular

Since I have spent many years on Windows Application development in my first three years of software career.  I was interested in the C#, had tried to understand the basic knowledge about C#. The programs, the patterns, the object-oriented methodolog

ASP.NET MVC企业级项目框架搭建实战

MVC项目搭建笔记---- 项目框架采用ASP.NET MVC+Entity Framwork+Spring.Net等技术搭建,搭建过程内容比较多,结合了抽象工厂的思想降低了三层之间的耦合,可以使用此套框架进行可扩展性要求高的企业级MVC项目开发.本框架的架构图如下: 第一步(创建分类文件夹): 创建5个文件夹.分别为UI,Model,BLL,DAL,Common,以便于将各模块分类整理. 第二步(项目类库的创建): 在UI文件夹创建ASP.NET MVC4项目模板选择基本. 在Model文件夹

Entity Framework快速入门--IQueryable与IEnumberable的区别

IEnumerable接口 公开枚举器,该枚举器支持在指定类型的集合上进行简单迭代.也就是说:实现了此接口的object,就可以直接使用foreach遍历此object: IQueryable 接口 它继承 IEnumerable 接口,而因为.net版本加入Linq和IQueryable后,使得IEnumerable不再那么单调,变得更加强大和丰富. 为了区别两个接口,我们通过一个实际的例子来解释一下. 根据上篇随笔的实例,编写如下代码: static void Main( string []

MVC &amp; Entity Framework(2)- controller、Models单独DLL

继上一篇MVC & Entity Framework(1)- 开发环境之后,已经很久没更新了.接下来记录一下怎么把MVC中的controller单独拆为一个类库,然后在web项目中引用.另外,顺便尝试把Models中的实体类也拆为一个单独的类库. 1.Controller类库项目 ①添加一个普通的类库(.Net Framework4.5) ②在PM控制台输入以下命令Nuget命令安装MVC的引用——这里直接在项目的“引用”那里右键“添加引用”,效果是一样的. 这里指定版本号4.0.20710.0