C# 我无法在实体框架核心中播种数据
我无法在我的webapp中植入数据,也不知道问题出在哪里。该应用程序运行良好,用户可以向数据库添加数据。我添加了saveChanges方法,但没有结果。我想我正在向数据库发送空数据,但我找不到问题所在。 我的文件: DbContextC# 我无法在实体框架核心中播种数据,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
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)
);