簡體   English   中英

我無法在Entity Framework Core中播種數據

[英]I cannot seed data in Entity Framework Core

我無法將數據植入我的Webapp中,也不知道出了什么問題。 該應用程序運行良好,用戶可以將數據添加到數據庫中。 我添加了saveChanges方法,但沒有結果。 我想我正在將空數據發送到數據庫,但找不到問題。 我的文件:DbContext

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

    }

    public DbSet<Books> Books { get; set; }
}

SeedBooks

public static void Initialize(BookDbContext context)
    {
        context.Database.EnsureCreated();

        if (context.Books.Any())
        {
            return;
        }

        var books = new Books[]
         {
        new Books{Id=1, Title ="Kont of Mount Cristos", Description="About eghteen century", Author="Don Mon", Category=Category.aksion},
        new Books{Id=2, Title="Introduction in C Sharp", Description="Learning computer programing", Author="Scott Allen", Category= Category.education},
        new Books{Id=3, Title="The Castle", Description="Learning about history", Author="Ismail Kadare", Category= Category.drama},
        new Books{Id=4, Title="Madam Bavary", Description="Love story", Author="Gi de Mopasan", Category= Category.romance}

         };

        foreach (Books b in books)
        {
            context.Books.Add(b);
        }
            context.SaveChanges();

    }

書籍檔案

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>

我用ef core 教程轉載了asp.net core mvc的問題。

我閱讀了這篇文章,發現在運行項目時,它將在本地創建一個數據庫,並創建一個學生表,其中包含您已初始化的數據。

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)
);

ID屬性設置了IDENTITY(1,1) ,這表示要將每個數據添加到表中時都需要添加ID。

因此, 刪除“ IDENTITY(1,1)” ,它將正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM