千家信息网

什么是ASP.NET Mvc5+EF7

发表于:2025-01-16 作者:千家信息网编辑
千家信息网最后更新 2025年01月16日,本篇内容主要讲解"什么是ASP.NET Mvc5+EF7",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"什么是ASP.NET Mvc5+EF7"吧!项目准备
千家信息网最后更新 2025年01月16日什么是ASP.NET Mvc5+EF7

本篇内容主要讲解"什么是ASP.NET Mvc5+EF7",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"什么是ASP.NET Mvc5+EF7"吧!

项目准备

工具:VS2015/Visual Studio Code 2015 下载地址

Mvc5 VS 插件:最新的预览版为Beta7 下载地址

由于是Beta7,而微软官方的说明文档和例子大部分可以适用,但是有些地方也是不对的,比如EF的命令,EF Beta3 与 Beta7差别很大,这也就是预览版的缺点,时不时的就改动了。
另外我这里使用的是VS2015而非Visual Studio Code ,毕竟有好点的肯定就用好的啊。
开工

新建项目

打开VS,点击文件-新建-项目-Web

这里起名叫做:MusicBank,就是一个音乐店吧。

在这里我们来一个空的就好。我们来自己建立Model/EF….
OK,项目建立好了后,我们看见的是这样的。

可以看见我们的项目其实是在 Src 文件夹下面。而项目中除了引用+简单设置以外就没有任何东西。

环境搭配

项目有了,但是却并不能直接用,我们需要搭建环境,比如我们需要引入EF等等。

dependencies

打开文件"project.json" 我们修改dependencies部分为:

 "dependencies": { "Microsoft.AspNet.Server.IIS": "1.0.0-beta7", "Microsoft.AspNet.Server.WebListener": "1.0.0-beta7", "Microsoft.AspNet.StaticFiles": "1.0.0-beta7", "Microsoft.AspNet.Mvc": "6.0.0-beta7", "EntityFramework.Commands": "7.0.0-beta7", "EntityFramework.SqlServer": "7.0.0-beta7", "Microsoft.Framework.Configuration.Json": "1.0.0-beta7", "Microsoft.Framework.Configuration.UserSecrets": "1.0.0-beta7" },

在这里添加了对Mvc、EF、Configuration的依赖。
Mvc的作用主要用于控制器的解析等操作,包括了WebAPI。
EF当然就是数据库了。
Configuration 用来读取本地配置,方便设置。

commands

打开文件"project.json" 我们修改commands部分为:

 "commands": { "web": "Microsoft.AspNet.Hosting --config hosting.ini", "ef": "EntityFramework.Commands" },

commands模块的主要作用是命令行执行,可简化操作,比如实际执行时输入 "ef" 即可代表 "EntityFramework.Commands"。

Model

OK,在这里我们先建立文件夹 Models,随后我们在Model文件夹上右键-添加-类:

Artist

using System;using System.Collections.Generic;using System.ComponentModel.DataAnnotations;using System.ComponentModel.DataAnnotations.Schema;namespace MusicBank.Models{ public class Artist {  [Key]  [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]  public Guid Id { get; set; }  [Required]  public string Name { get; set; }  [Required]  public int Age { get; set; }  public virtual List

一个歌唱家,有个名字和年龄,然后有N个歌曲。

Audio

using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace MusicBank.Models
{
public class Audio
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
[Required]
public string Name { get; set; }
[Required]
public int Type { get; set; }
[Required]
public string Src { get; set; }
[Required]
public Guid ArtistId { get; set; }
public Artist Artist { get; set; }
}
}
歌曲也简化了,一个名字,一个类型,一个源文件,属于某个歌唱家。

MusicContext

这个想必大家不陌生吧,用于数据库的查询等操作就全靠这个了;算是EF的精髓。

using Microsoft.Data.Entity;namespace MusicBank.Models{ public class MusicContext : DbContext {  public DbSet

这里只需要添加两个表就OK。

SampleData

为了方便,这里我直接在创建数据库的时候就进行数据的初始化工作,添加一些默认数据。

using Microsoft.Framework.DependencyInjection;using System;using System.Linq;namespace MusicBank.Models{ public class SampleData {  public static void Initialize(IServiceProvider serviceProvider)  {   var context = serviceProvider.GetService();   if (context.Database.EnsureCreated())   {    if (!context.Artists.Any())    {     var austen = context.Artists.Add(      new Artist { Name = "Austen", Age = 21 }).Entity;     var dickens = context.Artists.Add(      new Artist { Name = "Dickens", Age = 25 }).Entity;     var cervantes = context.Artists.Add(      new Artist { Name = "Cervantes", Age = 27 }).Entity;     context.Audio.AddRange(      new Audio()      {       Name = "Pride",       Type = 1,       Artist = austen,       Src = "Pride.mp3"      },      new Audio()      {       Name = "Northanger",       Type = 2,       Artist = austen,       Src = "Northanger.mp3"      },      new Audio()      {       Name = "David",       Type = 3,       Artist = dickens,       Src = "David.mp3"      },      new Audio()      {       Name = "DonQuixote",       Type = 1,       Artist = cervantes,       Src = "DonQuixote.mp3"      }     );     context.SaveChanges();    }   }  } }}

首先这是一个静态方法,需要传入一个"IServiceProvider",这个可以在项目启动的时候调用。

在方法进入后我们获取到上面的"MusicContext",然后我们进行数据库创建与数据添加工作。

if (context.Database.EnsureCreated())

这句主要用于判断是否需要进行数据库创建,如果是将进行创建,同时返回true,而后我们判断是否具有数据,如果数据库表为空,那么我们添加一些默认数据。

配置文件 config.json

在项目根目录添加文件:"config.json"在其中配置数据库链接字段如下:

{ "Data": { "MusicConnection": {  "ConnectionString": "Server=(localdb)\\mssqllocaldb;Database=MusicBank-Database;Trusted_Connection=True;MultipleActiveResultSets=true" } }}

启动配置Startup.cs

在项目启动的时候将会调用 Startup.cs 中的相关方法进行数据的初始化操作。

在这里我们需要做三件事儿:

获取到配置config.json,在构造函数中完成
设置数据库文件连接,在ConfigureServices方法中完成
初始化数据库相关数据,在Configure方法中完成

using Microsoft.AspNet.Builder;using Microsoft.AspNet.Hosting;using Microsoft.Data.Entity;using Microsoft.Dnx.Runtime;using Microsoft.Framework.Configuration;using Microsoft.Framework.DependencyInjection;using MusicBank.Models;namespace MusicBank{ public class Startup {  public Startup(IHostingEnvironment env, IApplicationEnvironment appEnv)  {   var builder = new ConfigurationBuilder(appEnv.ApplicationBasePath)    .AddJsonFile("config.json")    .AddJsonFile($"config.{env.EnvironmentName}.json", optional: true);   builder.AddEnvironmentVariables();   Configuration = builder.Build();  }  public IConfigurationRoot Configuration { get; set; }  public void ConfigureServices(IServiceCollection services)  {   services.AddMvc();   services.AddEntityFramework()    .AddSqlServer()    .AddDbContext(options =>    {     options.UseSqlServer(Configuration["Data:MusicConnection:ConnectionString"]);    });  }  public void Configure(IApplicationBuilder app, IHostingEnvironment env)  {   app.UseStaticFiles();   app.UseMvc();   SampleData.Initialize(app.ApplicationServices);  } }}

到这里我们的初始化操作基本完成了,现在来看看如何访问数据库数据了。

Controllers

首先在根目录添加文件夹 Controllers,右键-添加-新建项

在这里我就使用一个简单的WebAPI来进行数据演示了,后面会在文章中详细写写数据的渲染相关。

在文件 AudioController.cs 中,我们更改代码为:

using Microsoft.AspNet.Mvc;using MusicBank.Models;using System.Collections.Generic;using System.Linq;namespace MusicBank.Controllers{ [Route("api/[controller]")] public class AudioController : Controller {  [FromServices]  public MusicContext db { get; set; }  [HttpGet]  public IEnumerable

一个属性,两个方法。

在这里我们可以看见 MusicContext 属性并没有初始化,但是下面却能直接调用;这是因为我们添加了一个属性"[FromServices]",该属性意味着服务器能自动采用注解的方式对 db 进行赋值。

下面两个方法分别返回全部的音乐列表,和根据音乐名称返回音乐相关信息。

当然在两个方法上都有"[HttpGet]"属性,该属性指定了请求类型为 Get 方式,当然也有其他几种,如:"HttpPost""HttpPut""HttpDelete"等。

运行

在这里运行方式有两种,分别是 IIS 与 Web 命令行的方式。

IIS

这种方式直接运行,VS将打开浏览器并设置端口。

Web

还记得上面写到命令行的地方么?其中有这样一行:

 "web": "Microsoft.AspNet.Hosting --config hosting.ini",

在这里我们启动时候的参数在"hosting.ini"文件中,我们打开 hosting.ini 文件。

server=Microsoft.AspNet.Server.WebListenerserver.urls=http://localhost:5000

可以找到我们访问的Url,运行后把Url拷贝到浏览器运行就OK。
运行情况下你会看见这样的窗口,可以看出其实是调用的dnx进行运行的程序。而 DNX 是可以跨平台的,这也就意味着可以直接在Mac上跑起来。
这里写图片描述

效果

可以看出两个方法的接口调用结果是OK的。

到此,相信大家对"什么是ASP.NET Mvc5+EF7"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

数据 文件 数据库 方法 项目 运行 属性 两个 方式 配置 命令 文件夹 时候 音乐 作用 内容 名字 地址 地方 实际 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 mysql查看数据库字符 ssr无法与服务器建立安全 我的世界面积最大的服务器 金仓数据库界面图片 西安软件开发哪个最好 sybase打开数据库 2018年网络安全宣传案例 网络安全软件的论文 复旦大学网络安全专业研究生就业 魔法觉醒设置定位服务器排名 湖南健康码服务器崩溃 什么是服务器组网 甘肃网络技术服务目的 文明重启固定刷新服务器 软件开发销售的增值税率 电脑作为服务器 小学校园网络安全知识快板词 网络安全适合用什么电脑 西海数据库怎么样 软件开发视频教程第三节 客户服务信息数据库的建立目的 北京我惠网络技术 广州猫王互联网科技有限公司 智能家居服务器怎么挑选 成都顶呱呱网络技术有限公司招聘 华工信息网络技术有限公司 请列举数据库的种类及特点 口碑好的软件开发技术怎么样 纵讯网络技术有限公司 云原生网络技术沙龙
0