簡體   English   中英

MySqlException:字段 'id' 沒有默認值 - Entity Framework Core 2.1

[英]MySqlException: Field 'id' doesn't have a default value - Entity Framework Core 2.1

我是 ASP.NET 核心 MVC 的新手。 我在使用實體框架核心向 MySQL 插入數據時出錯。 在調試時,我得到了上下文分配的減號(-2147482645)中的 id。為什么 id 是由 EF 分配的? 如何解決此錯誤? MySQL id 列中的表為 NOTNULL,PK 和 Auto Increment 設置為默認值。 在此處輸入圖像描述

這是我的 DBContextFile

    {
        public AppDbContext(DbContextOptions<AppDbContext> options)
            : base(options)
        { }

        public DbSet<PCBDesign> pCBDesigns { get; set; }



        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
        }
    }

這是我的 Class

    {

        [Key]
        public int id { get; set; }
        public string userId { get; set; }
        public string desginNo { get; set; }
        public DateTime Crdate { get; set; }
        public string name { get; set; }
        public string contact { get; set; }
        public string notes { get; set; }
    }

調用后context.SaveChanges(); 得到錯誤:

Microsoft.EntityFrameworkCore.DbUpdateException: An error occurred while updating the entries. See the inner exception for details. ---> MySql.Data.MySqlClient.MySqlException: Field 'id' doesn't have a default value ---> MySql.Data.MySqlClient.MySqlException: Field 'id' doesn't have a default value

建表查詢:

DROP TABLE IF EXISTS `pcbdesigns`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `pcbdesigns` (
  `id` int NOT NULL AUTO_INCREMENT,
  `userId` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
  `desginNo` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
  `Crdate` datetime NOT NULL,
  `name` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
  `contact` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
  `notes` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `pcbdesigns`
--

LOCK TABLES `pcbdesigns` WRITE;
/*!40000 ALTER TABLE `pcbdesigns` DISABLE KEYS */;
INSERT INTO `pcbdesigns` VALUES ();
/*!40000 ALTER TABLE `pcbdesigns` ENABLE KEYS */;
UNLOCK TABLES;`

問題已解決: 第 1 步:為每個表復制表創建腳本第 2 步:從同一腳本創建的已刪除表。 第 3 步:在表格中添加一個虛擬行。

附加信息:我從代碼優先方法進行了遷移,我認為遷移時 Entity Framework Core 存在一些問題。 從現在開始,我不會進行遷移,這會給我帶來更多錯誤。

謝謝。

暫無
暫無

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

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