C# 我无法在实体框架核心中播种数据

C# 我无法在实体框架核心中播种数据,c#,asp.net-mvc,entity-framework,azure,asp.net-core,C#,Asp.net Mvc,Entity Framework,Azure,Asp.net Core,我无法在我的webapp中植入数据,也不知道问题出在哪里。该应用程序运行良好,用户可以向数据库添加数据。我添加了saveChanges方法,但没有结果。我想我正在向数据库发送空数据,但我找不到问题所在。 我的文件: DbContext public class BookDbContext: DbContext { public BookDbContext(DbContextOptions options): base(options) { } public

我无法在我的webapp中植入数据,也不知道问题出在哪里。该应用程序运行良好,用户可以向数据库添加数据。我添加了saveChanges方法,但没有结果。我想我正在向数据库发送空数据,但我找不到问题所在。 我的文件: DbContext

 public class BookDbContext: DbContext
{
    public BookDbContext(DbContextOptions options): base(options)
    {

    }

    public DbSet<Books> Books { get; set; }
}
图书档案

public enum Category
{
    aksion, drama, romance, education
}
public class Books
{
    public int Id { get; set; }
    [Required]
    public string Title { get; set; }
    [Required]
    [Display(Name = "Autor Name")]
    public string Author { get; set; }
    [Required]
    [MaxLength(80)]
    public string Description { get; set; }
    [Required]
    public Category Category { get; set; }






}
图书索引文件

 <table class="table">
    @*<thead>
            <tr>
                <th>
                    @Html.DisplayNameFor(model => Model.Author)
                </th>
                <th>
                    @Html.DisplayNameFor(model => model.Title)
                </th>
                <th>
                    @Html.DisplayNameFor(model => model.Category)
                </th>
                <th>
                    @Html.DisplayNameFor(model => model.Description)
                </th>
                <th></th>
            </tr>
        </thead>*@
    <tbody>
        @foreach (var item in Model.Book)
        {
            <tr>
                <td>
                    @Html.DisplayFor(modelItem => item.Author)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.Title)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.Category)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.Description)
                </td>
                <td>
                    <a asp-action="Details" asp-route-id="@item.Id">Details</a>

                </td>
            </tr>
        }
    </tbody>
</table>

<a asp-action="Create" asp-controller="Books">Create</a>

我用asp.net core mvc和ef core重现了您的问题

我在阅读本文后发现,当您运行该项目时,它将在本地创建一个数据库,并创建一个包含您初始化的数据的student表

var context = services.GetRequiredService<SchoolContext>();
DbInitializer.Initialize(context);
ID属性设置了IDENTITY 1,1,这意味着您需要在将每个数据添加到表中时添加ID


所以删除IDENTITY1,1就可以了。

我不认为很多人会阅读所有这些代码。你试图解决这个问题的方法是什么?您是否已使用开发人员工具在浏览器中检查结果?运行一个调试器,或者甚至在打印语句中声明您的猜测?我假设您正在使用VisualStudio,在您的指尖上有一个优秀的调试器。把事情分解成可以理解的小部分,并在进行过程中测试你的断言。初始化函数在哪里被调用?谢谢Joey,删除ID值后就可以工作了。
var context = services.GetRequiredService<SchoolContext>();
DbInitializer.Initialize(context);
CREATE TABLE [dbo].[Student] (
    [ID]       INT            IDENTITY (1, 1) NOT NULL,
    [Age]      INT            NOT NULL,
    [LastName] NVARCHAR (MAX) NULL,
    CONSTRAINT [PK_Student] PRIMARY KEY CLUSTERED ([ID] ASC)
);