我如何在MVC 5数据库中创建一个新表

本文关键字:新表 一个 创建 MVC 数据库 | 更新日期: 2023-09-27 18:15:34

我有一个MVC 5应用程序,它使用托管在Azure中的MySQL作为数据源。我遵循了这个教程,现在我有了这些表格。关键是,在数据库中,我想创建一个名为"请求"的新表。我已经在代码中激活了数据库的迁移。我也有以下代码在我的应用程序。

Request.cs:(在Models文件夹内)

public class Request
{
    public int RequestID { get; set; }
    [Required]
    [Display(Name = "Request type")]
    public string RequestType { get; set; }
}

Test.cshtml:

@model Workfly.Models.Request
@{
    ViewBag.Title = "Test";
}
<h2>@ViewBag.Title.</h2>
<h3>@ViewBag.Message</h3>
@using (Html.BeginForm("SaveAndShare", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    @Html.AntiForgeryToken()
    <h4>Create a new request.</h4>
    <hr />
    @Html.ValidationSummary("", new { @class = "text-danger" })
    <div class="form-group">
        @Html.LabelFor(m => m.RequestType, new { @class = "col-md-2 control-label" })
        <div class="col-md-10">
            @Html.TextBoxFor(m => m.RequestType, new { @class = "form-control", @id = "keywords-manual" })
        </div>
    </div>
    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <input type="submit" class="btn btn-default" value="Submit!" />
        </div>
    </div>
}
@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

HomeController.cs:

    [HttpPost]
    public ActionResult SaveAndShare(Request request)
    {
        if (ModelState.IsValid)
        {
            var req = new Request { RequestType = request.RequestType };
        }
        return RedirectToAction("Share");
    }

关键在于,我希望用户在Test视图中填写表单并单击submit,当单击submit时,我希望在新表中创建一个新条目。当然,首先我需要创建表格。我应该通过MySQL工作台使用SQL查询来创建它吗?如果是,那么我如何将新表与我的代码连接?我想我需要一些DB上下文,但不知道如何做到这一点。如果有人可以张贴一些代码示例,我会很高兴。

更新:

我在Models文件夹中创建了一个新类,命名为RequestContext.cs,其内容如下:

public class RequestContext : DbContext
{
    public DbSet<Request> Requests { get; set; }
}

然后,我执行了"Add-Migration Request""Update-Database"命令,但仍然没有。还请注意,我有一个MySqlInitializer类,它看起来像这样:

public class MySqlInitializer : IDatabaseInitializer<ApplicationDbContext>
{
    public void InitializeDatabase(ApplicationDbContext context)
    {
        if (!context.Database.Exists())
        {
            // if database did not exist before - create it
            context.Database.Create();
        }
        else
        {
            // query to check if MigrationHistory table is present in the database 
            var migrationHistoryTableExists = ((IObjectContextAdapter)context).ObjectContext.ExecuteStoreQuery<int>(
            string.Format(
              "SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = '{0}' AND table_name = '__MigrationHistory'",
              ""));
            // if MigrationHistory table is not there (which is the case first time we run) - create it
            if (migrationHistoryTableExists.FirstOrDefault() == 0)
            {
                context.Database.Delete();
                context.Database.Create();
            }
        }
    }
}

}

我如何在MVC 5数据库中创建一个新表

您必须创建DbContext类并添加引用Request类的DbSet。然后使用控制台添加迁移和更新数据库。

http://msdn.microsoft.com/en-us/data/jj729737.aspx

删除当前的迁移,添加db上下文类和dbset来引用请求类,然后再次添加迁移。在尝试在azure上部署时也遇到了类似的问题,这是有效的。