【发布时间】:2025-12-04 02:35:01
【问题描述】:
我正在使用 ASP.Net Core 2 和带有 MySQL 的 Entity Framework Core。
我想在数据库中添加一个简单的实体。
我的模型是这样的-
public class Employee
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
[Required]
public string City { get; set; }
[Required]
public string Department { get; set; }
[Required]
public int Salary { get; set; }
}
我已经像这样在 DBContext 中配置了 fluent API-
//Key automatic generation configuration
modelBuilder.Entity<Employee>()
.Property(b => b.Id)
.ValueGeneratedOnAdd();
然后从控制器调用以添加这样的内容-
Employee employee = new Employee
{
City = newString,
Department = newString,
Name = newString,
Salary = DateTime.UtcNow.Millisecond
};
_context.Employee.Add(employee);
_context.SaveChanges();
我看到的是更新具有 ID = 1 的第一个数据并且永远不会添加新数据。我希望我的 ID 自动递增,并且不想使用 GUID 来维护 ID。我需要做什么才能让它发挥作用?
更新-
我已经试过了-
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
并且 [钥匙] 公共 int ID { 获取;放; }
和
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
但没有运气。
完整代码在this Github Repository。
控制器是here。
【问题讨论】:
-
数据库中的列是否设置了自增?
-
听起来像提供程序错误。您使用的是哪个提供商?无论如何,
Add不应该生成UPDATE,打开 EF Core logging 并查看执行的命令。 -
你所拥有的应该可以工作。实际上,实际上不需要任何流利的配置或数据注释。您选择发布的代码中未显示其他内容。我建议发布一个更完整的代码示例,特别是一个小的可复制示例。
标签: mysql asp.net entity-framework entity-framework-core asp.net-core-2.0