[英]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.