簡體   English   中英

將值插入數據庫 - 實體框架

[英]Insert values into database- Entity Framework

為什么這段代碼不起作用? 我想用當前登錄的用戶的用戶名插入數據庫記錄。

[HttpPost]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> CreateMeme(Memy memy)
        {
            var user=await GetCurrentUser();
            memy.Autor = user.UserName;
            memy.Like = 0;
            memy.Dislike = 0;
            if (ModelState.IsValid)
            {
                _context.Memy.Add(memy);
                _context.SaveChanges();
                return RedirectToAction("Index");
            }

            return View(memy);
        }

這是表:

CREATE TABLE [dbo].[Memy] (
    [Id_mema] INT  IDENTITY (1, 1) NOT NULL,
    [autor]   TEXT NULL,
    [like]    INT  NULL,
    [dislike] INT  NULL,
    PRIMARY KEY CLUSTERED ([Id_mema] ASC)
);

我有 2 個錯誤:“當 IDENTITY_INSERT 設置為 OFF 時,無法為表 'Memy' 中的標識列插入顯式值”

“更新條目時發生錯誤。有關詳細信息,請參閱內部異常”

如何解決這個問題?

編輯方法CreateMeme

[HttpPost]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> CreateMeme(Memy memy)
        {
            var user=await GetCurrentUser();
            memy.Autor = user.UserName;
            memy.Like = 0;
            memy.Dislike = 0;
            if (ModelState.IsValid)
            {
                _context.Memy.Add(memy);
                _context.SaveChanges();
                return RedirectToAction("Index", "Home", new { area = "" });
            }

            return View(memy);
        }

如果你是 C# 類來定義你的實體,你可能需要做這樣的事情......

   public class Memy
    {
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int Id_Mema { get; set; }
        public string Autor { get; set; }

或者,如果您使用 fluent API 定義實體屬性,則可能需要執行以下操作;

 protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Memy>()
            .Property(p => p.Id_mema)
            .ValueGeneratedOnAdd();
    }

這里應該有更多關於使用 Fluent API 的信息, 這里有更多關於用屬性裝飾你的 POCO 以處理自動增量的信息。

-HTH

此錯誤提示以下內容:您的 Memy 表設置為 'Is Identity' = 'True' 並自動遞增。 所以你不能插入顯式的鍵值,這是合乎邏輯的。 請檢查您的函數,也許您在CreateMeme中的方法參數對象具有memy.Id_Mema值。

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> CreateMeme(Memy memy)

確保您的代碼沒有明確分配memy.Id_Mema 希望這可以幫助。

暫無
暫無

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

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