第一次了解ASP.NET mvc5 ef7的奇妙之旅
话说微软今年很厉害,Win10引起了大众的关注,而且最新。NET5框架还可以。
最新的。NET5是开源的,由NuGet、Node和Bower跨平台实现。这意味着它可以使用直接在Mac或Linux上开发。NET。
最新的Mvc5和EF框架有所改变,这与之前的Mvc4项目不同。如果移植了,除了核心代码可以复制,其他的都要重新启动。
最近准备修改网站,所以尝试了最新的框架;当然,既然还是预览版,一切变化太大,所以也走了不少弯路;我想在这里记录它。
项目准备
工具:VS2015/Visual Studio Code 2015下载地址
Mvc5 VS插件:最新预览版是Beta7的下载地址
既然是Beta7,微软的官方文档和例子大部分都适用,但有些地方也不对。比如EF Beta3和Beta7就有很大的不同,这是预览版的缺点,会时有变化。另外,我这里用的是VS2015,而不是Visual Studio Code。毕竟,如果有好的东西,那一定是好的。生效
新项目
打开VS,点击文件-新建-项目-网站
这里的名字叫MusicBank,只是一家音乐商店。
让我们在这里有一个空的。让我们建立自己的模型/EF。好的。项目成立后,我们看到的是这个。
你可以看到我们的项目实际上在Src文件夹下。项目中除了对简单设置的引用之外什么都没有。
环境搭配
该项目可用,但不能直接使用。我们需要营造一个环境,比如我们需要引入EF等等。
属国
打开文件“project.json”,我们修改依赖项部分如下:
依赖项' : { '微软。微软。ASP.NET . server . weblistener ' : ' 1 . 0 . 0-beta 7 ','微软。AspNet . static files ' : ' 1 . 0 . 0-beta 7 ','微软。AspNet.Mvc': '6.0.0-beta7 ',' EntityFramework。命令' : '7.0.0-beta7 ',' EntityFramework。SqlServer': '7.0.0-beta7 ','微软。框架. configuration . Json ' : ' 1 . 0 . 0-beta 7 ',微软。框架。配置。用户机密' :' 1.0.0-beta 7'},其中增加了对Mvc、EF和Configuration的依赖。Mvc的作用主要用于控制器解析和其他操作,包括WebAPI。EF当然是一个数据库。配置用于读取本地配置,以便于设置。
命令
打开文件“project.json”,我们修改命令部分如下:
命令' : {'web' : '微软。aspnet . hosting-config hosting . ini ',' ef' :' EntityFramework。Commands'},Commands模块的主要功能是在命令行上执行,可以简化操作。例如,在实际执行中输入“ef”可以表示“entityframework”
模型
好,这里我们首先创建文件夹模型,然后我们右击模型文件夹-添加-类:
艺术家
使用系统;使用系统。集合。通用;使用系统。组件模型。数据注释;使用系统。组件模型。数据注释。模式;命名空间MusicBank。模型{公共类艺术家{[键][数据库生成属性(数据库生成选项。Identity)])公共Guid Id { get设置;}[必选]公共字符串名称{ get设置;}[必需]公共int Age { get设置;}公共虚拟列表音频音频{ get设置;}}}一个歌手,有名字和年龄,那么就有n首歌。
声音的
使用系统;使用系统。组件模型。数据注释;使用系统。组件模型。数据注释。模式;
命名空间音乐银行.模型{公共类音频{[键][数据库生成属性(数据库生成选项身份])公共Guid Id { get设置;}[必选]公共字符串名称{获取设置;}[必需]公共(同Internationalorganizations)国际组织类型{获取设置;}[必选]公共字符串Src { get设置;}[必选]公共Guid ArtistId { get设置;}公共艺术家艺术家{获取设置;} }}歌曲也简化了,一个名字,一个类型,一个源文件,属于某个歌唱家。
音乐背景
这个想必大家不陌生吧,用于数据库的查询等操作就全靠这个了;算是仰角指示器的精髓。
使用微软。数据。实体;命名空间音乐银行.模型{公共类MusicContext : DbContext {公共DbSetAudio Audio { get设置;}公共数据库艺术家艺术家{获取设置;} }}这里只需要添加两个表就好的。
样本数据
为了方便,这里我直接在创建数据库的时候就进行数据的初始化工作,添加一些默认数据。
使用微软。框架。依赖注射;使用系统;使用系统Linq .命名空间音乐银行.模型{公共类样本数据(公共静态void Initialize(iServiCeProvider ServiCe Provider){ var context=ServiCe Provider .GetServiceMusicContext();如果(上下文数据库。EnsureCreated()) { if(!语境。艺术家。任何(){ var austen=context .艺术家。添加(新艺术家{姓名='奥斯汀,年龄=21 })。实体;定义变量狄更斯=语境。艺术家。添加(新艺术家{姓名='狄更斯,年龄=25 })。实体;var cervantes=context .艺术家。添加(新艺术家{姓名='塞万提斯,年龄=27 })。实体;语境音频。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=' donjiokedge ',Type=1,Artist=cervantes,Src=' donjiokedge。MP3 ' });语境saveChanges();} } } }}首先这是一个静态方法,需要传入一个“IServiceProvider”,这个可以在项目启动的时候调用。
在方法进入后我们获取到上面的“MusicContext”,然后我们进行数据库创建与数据添加工作。
如果(上下文数据库。EnsureCreated())这句主要用于判断是否需要进行数据库创建,如果是将进行创建,同时返回没错,而后我们判断是否具有数据,如果数据库表为空,那么我们添加一些默认数据。
配置文件config.json
在项目根目录添加文件:“config.json”在其中配置数据库链接字段如下:
{ ' Data ' : { ' MusicConnection ' : { ' ConnectionString ' : ' Server=(localdb)\ \ mssqllocaldb;数据库=音乐库-数据库;可信_连接=真;MultipleActiveResultSets=true ' } } }启动配置Startup.cs
在项目启动的时候将会调用Startup.cs中的相关方法进行数据的初始化操作。
在这里我们需要做三件事儿:
获取到配置config.json,在构造函数中完成设置数据库文件连接,在配置服务方法中完成初始化数据库相关数据,在安装使成形方法中完成
使用微软. AspNet。建设者使用微软。托管;使用微软。数据。实体;使用微软Dnx。运行时间使用微软。框架。配置;使用微软。框架。依赖注射;使用音乐银行.模型;命名空间MusicBank { public class Startup { public Startup(IHostingEnvironment env,iapresentenvironment appEnv){ var builder=new configuration builder(appEnv .ApplicationBasePath ).AddJsonFile('config.json ').AddJsonFile($'config .{env .环境名称}。' json ',可选: true);建筑商AddEnvironmentVariables();配置=构建器build();} public IConfigurationroot Configuration { get;设置;} public void ConfigureServices(IServiceCollection services){ services .AddMvc();服务AddEntityFramework().AddSqlServer().AddDbContextMusicContext(options={ options .UseSqlServer(配置[' data : music connection : connection string ']);});}公共void Configure(IApplicationBuilder应用程序,IHostingEnvironment env) { app .UseStaticFiles();应用程序.UseMvc();样本数据。初始化(应用程序。应用服务);} }}到这里我们的初始化操作基本完成了,现在来看看如何访问数据库数据了。
控制器
首先在根目录添加文件夹控制器,右键-添加-新建项
在这里我就使用一个简单的WebAPI来进行数据演示了,后面会在文章中详细写写数据的渲染相关。
在文件AudioController.cs中,我们更改代码为:
使用微软. AspNet。手动音量调节使用音乐银行.模型;使用系统。集合。通用;使用系统Linq .命名空间音乐银行.控制器{[路由(' API/[控制器]')]公共类音频控制器:控制器{[来自服务]公共MusicContext db { get设置;}[HttpGet]public ienumerabledio Get(){ return db .音频。to list();} [HttpGet('{name}')]公共音频获取(字符串名称){音频音频=分贝.音频。其中(a=(a.Name==name)).first ordefault();返回音频;} }}一个属性,两个方法。
在这里我们可以看见音乐背景属性并没有初始化,但是下面却能直接调用;这是因为我们添加了一个属性"[FromServices]",该属性意味着服务器能自动采用注解的方式对进行赋值。
下面两个方法分别返回全部的音乐列表,和根据音乐名称返回音乐相关信息。
当然在两个方法上都有"[HttpGet]"属性,该属性指定了请求类型为得到方式,当然也有其他几种,如:" HttpPost " " HttpPut " " HttpDelete "等。
运行
在这里运行方式有两种,分别是(同移民检查员移民检查)与网命令行的方式。
(同移民检查员移民检查)
这种方式直接运行,VS将打开浏览器并设置端口。
网
还记得上面写到命令行的地方么?其中有这样一行:
web': '微软. AspNet。主机配置主机。ini ',在这里我们启动时候的参数在宿主。初始化设置文件的后缀名文件中,我们打开hosting.ini文件。
服务器=微软. AspNet。服务器。weblistener服务器。URL=http://localhost :5000可以找到我们访问的Url,运行后把全球资源定位器(统一资源定位符)拷贝到浏览器运行就好的。运行情况下你会看见这样的窗口,可以看出其实是调用的dnx进行运行的程序。而DNX是可以跨平台的,这也就意味着可以直接在苹果个人计算机上跑起来。这里写图片描述
效果
可以看出两个方法的接口调用结果是好的。
初识ASP .NET Mvc5 EF7的旅程到这里就结束了,希望可以为大家开启ASP .NET Mvc5 EF7的又一个美妙旅程。
版权声明:第一次了解ASP.NET mvc5 ef7的奇妙之旅是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。