初识ASP.NET Mvc5+EF7的奇妙之旅

初识ASP.NETMvc5+EF7的奇妙之旅

本文主要是和大家分享ASP的奇妙之旅。NETMvc5 EF7,并了解。旅途中的NET5框架。感兴趣的朋友可以参考一下。

据说微软今年很厉害,Win10引起了大众的关注,还有最新的。NET5框架就更OK了。

最新的。NET5通过使用NuGet、Node和Bower实现了开源和跨平台。这意味着这可以直接在Mac或Linux上使用。网。

而且最新的Mvc5和EF框架都改头换面了,和之前的Mvc4项目不一样。移植的话就要复制核心代码,从头再来。

最近准备改版网站,所以试用了最新的框架。当然,由于还是预览版,所有改动都太大,所以走了很多弯路。在这里记录一下吧。

项目准备

工具:VS2015/Visual Studio代码2015

Mvc5 VS插件:最新预览版是Beta7的。

因为是Beta7,而且微软的官方文档和例子大部分都可以应用,但是有些地方也是不对的,比如EF的command。EF Beta3和Beta7差别很大,这是预览版的缺点,而且还时不时的改。

另外,我这里用的是VS2015,而不是Visual Studio代码。毕竟有更好的就用吧。

开工

新建项目

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

它叫MusicBank,是一家音乐商店。

来,我们喝一杯空的。让我们建立我们自己的模型。

好了,项目确立后,我们看到的是这个。

您可以看到我们的项目实际上位于Src文件夹下。除了对简单设置的引用之外,项目中没有任何内容。

环境搭配

项目是有的,但是不能直接用。我们需要建立一个环境,比如我们需要引入EF等等。

dependencies

打开文件“project.json ”,我们将依赖项部分修改为:

依赖项:{

微软。AspNet . server . IIS : 1 . 0 . 0-beta 7 ,

微软。AspNet . server . web listener : 1 . 0 . 0-beta 7 ,

微软。AspNet . static files : 1 . 0 . 0-beta 7 ,

微软。AspNet.Mvc: 6.0.0-beta7 ,

实体框架。命令: 7.0.0-beta7 ,

实体框架。SqlServer: 7.0.0-beta7 ,

微软。framework . configuration . JSON : 1 . 0 . 0-beta 7 ,

微软。framework . configuration . user secrets : 1 . 0 . 0-beta 7

},

这里增加了对Mvc,EF,配置的依赖。

Mvc主要用于控制器等操作的分析,包括WebAPI。

EF当然是数据库。

配置用于读取本地配置,方便设置。

commands

打开文件“project.json ”,我们将命令部分修改为:

命令:{

web: Microsoft。AspNet . Hosting-config Hosting . ini ,

ef: EntityFramework。命令

},

命令模块的主要功能是命令行执行,可以简化操作。例如,在实际执行中输入“ef”可以表示“EntityFramework”。命令”。

Model

好了,在这里我们首先设置文件夹模型,然后我们右键单击模型文件夹-添加-类:

Artist

使用系统;

使用系统。集合。泛型;

使用系统。ComponentModel . DataAnnotations

使用系统。component model . data annotations . schema;

命名空间MusicBank。模型

{

公共类艺术家

{

[答案]

[databasegenertedattribute(databasegenertedoption。身份)]

公共Guid Id { get设置;}

[必需]

公共字符串名称{ get设置;}

[必需]

public int Age { get设置;}

公共虚拟列表音频音频{ get设置;}

}

}

一个歌手有名字和年龄,然后有n首歌。

Audio

使用系统;

使用系统。ComponentModel . DataAnnotations

使用系统。component model . data annotations . schema;

命名空间MusicBank。模型

{

公共类音频

{

[答案]

[databasegenertedattribute(databasegenertedoption。身份)]

公共Guid Id { get设置;}

[必需]

公共字符串名称{ get设置;}

[必需]

public int类型{ get设置;}

[必需]

公共字符串Src { get设置;}

[必需]

公共Guid ArtistId { get设置;}

公共艺术家艺术家{获取设置;}

}

}

歌曲也简化了,一个名字,一个类型,一个源文件,属于某个歌唱家。

MusicContext

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

使用微软。数据。实体;

命名空间音乐银行.模型

{

公共类音乐上下文:DbContext

{

公共DbSetAudio音频{获取设置;}

公共DbSetArtist艺术家{ get设置;}

}

}

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

SampleData

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

使用微软框架。依赖性注射

使用系统;

使用系统100 . Linq

命名空间音乐银行.模型

{

公共类样本数据

{

公共静态void Initialize(IServiceProvider服务提供商)

{

定义变量上下文=服务提供商.GetServiceMusicContext();

如果(上下文数据库。EnsureCreated())

{

如果(!语境。艺术家。Any())

{

瓦尔奥斯汀=上下文。艺术家。添加(

新艺人{ Name=Austen ,年龄=21 })。实体;

var dickens=语境。艺术家。添加(

新艺人{ Name=狄更斯,年龄=25 })。实体;

定义变量塞万提斯=语境。艺术家。添加(

新艺人{ Name=塞万提斯,年龄=27 })。实体;

语境音频。添加范围(

新音频()

{

Name=Pride ,

类型=1,

艺术家=奥斯汀,

Src=Pride.mp3

},

新音频()

{

Name=诺桑觉寺,

类型=2,

艺术家=奥斯汀,

Src=Northanger.mp3

},

新音频()

{

Name=大卫,

类型=3,

艺术家=狄更斯,

Src=David.mp3

},

新音频()

{

Name=唐吉诃德,

类型=1,

艺术家=塞万提斯,

Src=唐吉诃德。 mp3

}

);

语境save changes();

}

}

}

}

}

首先这是一个静态方法,需要传入一个"

IServiceProvider

",这个可以在项目启动的时候调用。

在方法进入后我们获取到上面的"

MusicContext

",然后我们进行数据库创建与数据添加工作。

如果(上下文数据库。EnsureCreated())

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

配置文件配置。json

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

{

数据:{

音乐连接:{

ConnectionString ":" Server=(local db) mssqllocaldb;数据库=音乐库-数据库;trusted _ Connection=true multipleactiveresultsets=true

}

}

}

启动配置Startup.cs

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

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

获取到配置配置文件,在构造函数中完成

设置数据库文件连接,在配置服务方法中完成

初始化数据库相关数据,在安装使成形方法中完成

使用微软AspNet。建设者

使用微软AspNet。主办;主持

使用微软。数据。实体;

使用微软. Dnx。运行时间

使用微软。框架。配置;

使用微软框架。依赖性注射

使用音乐银行。模特;

命名空间音乐库

{

公共类启动

{

公共启动(IHostingEnvironment env,IApplicationEnvironment appEnv)

{

var生成器=新配置生成器(appEnv .ApplicationBasePath)。AddJsonFile(config.json )。AddJsonFile($ 配置.环境.环境名称}。 json ,可选:真);

建筑商AddEnvironmentVariables();

配置=构建器. build();

}

公共IConfigurationRoot配置{获取设置;}

公共void配置服务(IServiceCollection服务)

{

服务添加MVC();

服务AddEntityFramework()。AddSqlServer()。AddDbContextMusicContext(选项=

{

选项UseSqlServer(配置[ Data:music connection:ConnectionString ]);

});

}

公共void配置(IApplicationBuilder应用程序,IHostingEnvironment环境)

{

app。UseStaticFiles();

app。use MVC();

SampleData。初始化(应用程序。应用服务);

}

}

}

至此,我们的初始化操作基本完成。现在让我们看看如何访问数据库数据。

Controllers

首先,在根目录中添加文件夹控制器,右键单击-添加-创建新项目。

这里,我将使用一个简单的WebAPI来演示数据。稍后,我将在文章中详细介绍数据渲染。

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

使用微软。AspNet . Mvc

使用音乐银行。模特;

使用系统。集合。泛型;

使用系统。Linq

命名空间MusicBank。控制器

{

[路由( API/[控制器])]

公共类AudioController:控制器

{

[来自服务]

public MusicContext db { get设置;}

[HttpGet]

public IEnumerableAudio Get()

{

返回db。audio . to list();

}

[HttpGet({name})]

公共音频获取(字符串名称)

{

音频audio=db。Audio.Where(a=(a.Name==name))。FirstOrDefault();

返回音频;

}

}

}

一个属性,两种方法。

这里我们可以看到MusicContext属性没有初始化,但是可以直接在下面调用;这是因为我们添加了一个属性“[FromServices]”,这意味着服务器可以通过注释自动为db赋值。

以下两种方法分别返回所有音乐列表,根据音乐名称返回音乐相关信息。

当然,两种方法都有“[HttpGet]”属性,指定请求类型为Get。当然还有其他几种方法,比如:“HTTP POST”、“HTTP PUT”、“HTTP DELETE”。

运行

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

IIS

直接这样运行,VS会打开浏览器,设置端口。

Web

还记得上面写命令行的地方吗?有这样一句台词:

web: Microsoft。AspNet . Hosting-config Hosting . ini ,

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

服务器=微软。AspNet.Server.WebListener

server . URL=http://localhost:5000

你可以找到我们访问过的网址,运行后把网址复制到浏览器中运行。

运行的时候会看到这个窗口,可以看到其实就是调用dnx运行的程序。DNX是跨平台的,这意味着它可以直接在Mac上运行。

影响

可以看出,两种方法的接口调用结果都是可以的。

认识ASP的旅程。NET的MVC5EF7在这边。希望你能开始另一段精彩的ASP之旅。NET的MVC5EF7。

初识ASP.NET Mvc5+EF7的奇妙之旅