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

using Microsoft.Data.Entity; namespace MusicBank.Models { public class MusicContext : DbContext { public DbSet<Audio> Audio { get; set; } public DbSet<Artist> Artists { get; set; } } }

这里只需要添加两个表就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<MusicContext>(); 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<MusicContext>(options => { options.UseSqlServer(Configuration["Data:MusicConnection:ConnectionString"]); }); } public void Configure(IApplicationBuilder app, IHostingEnvironment env) { app.UseStaticFiles(); app.UseMvc(); SampleData.Initialize(app.ApplicationServices); } } }

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

Controllers

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

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

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

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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wjwpgj.html