ASP.NET Core MVC_数据驱动的应用程序


代码

数据驱动的应用程序

定义Model

代码: MenuCard.cs
代码: Menu.cs
代码: MenuCardsContext.cs

Startup.cs

public void ConfigureServices(IServiceCollection services)
{
	services.AddDbContext<Applicationdbcontext>(options =>
		options.UseSqlServer(
		Configuration.GetConnectionString("DefaultConnection")));
	services.AddDbContext<MenuCardsContext>(options =>
		options.UseSqlServer(
		Configuration.GetConnectionString("DefaultConnection")));
	//...
}

appsettings.json

{
	"ConnectionStrings": {
	"DefaultConnection": "Server=
		(localdb)\\mssqllocaldb;Database=MenuPlanner;
		Trusted_Connection=True;MultipleActiveResultSets=true"
},
//...
}

创建数据库

cd C:\Users\Stone\Source\Repos\Professional_Web_Demo\ASPCoreMvcSamples\MenuPlanner
dotnet ef migrations add InitMenuCards ––context MenuCardsContext

在这里插入图片描述

如果出现Build failed.可以重新生成项目

执行完命令后,会创建InitMenuCards类,Up方法创建数据库表,使用Down方法再次删除更改。

代码: InitMenuCards.cs

创建MenuCardDatabaseInitializer初始化数据库。

public class MenuCardDatabaseInitializer
{
    private static bool s_databaseChecked = false;
    private readonly MenuCardsContext _context;

    public MenuCardDatabaseInitializer(MenuCardsContext context)
        => _context = context;

    public async Task CreateAndSeedDatabaseAsync()
    {
        if (! s_databaseChecked)
        {
            s_databaseChecked = true;
            //启动迁移
            await _context.Database.MigrateAsync();
            //MigrateAsync会检查—连接字符串关联的数据库和迁移中制定的数据库是否是相同的版本,如果不同,则调用Up方法获得相同的版本

            //如果无数据,填充数据库
            if (await _context.MenuCards.CountAsync() == 0)
            {
                var menuCards = new List<MenuCard>() {
                    new MenuCard { Name = "Breakfast", Active = true,Order = 1 },
                    new MenuCard { Name = "Vegetarian", Active =true, Order = 2 },
                    new MenuCard { Name = "Steaks", Active = true, Order = 3 }
                };
                _context.MenuCards.AddRange(menuCards);
                await _context.SaveChangesAsync();
            }
        }
    }
}

创建服务

创建IMenuCardsService接口
代码: IMenuCardsService.cs

实现MenuCardsService
代码: MenuCardsService.cs

通过依赖注入使服务可用,使用AddScoped方法。

public void ConfigureServices(IServiceCollection services)
{
	//...
	services.AddScoped<IMenuCardsService, MenuCardsService>();
	//...
}

创建控制器

在这里插入图片描述

代码: MenusAdminController.cs

当您使用Web API时,通常使用HTTP DELETE动词来删除资源。对于访问页面的浏览器,情况并非如此。 DeleteConfirmed方法需要使用HTTP POST动词(由HttpPost属性定义)请求。

创建视图

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Star_Inori/article/details/82179390