gpt4 book ai didi

c# - 无法将 NULL 值插入表 'MaintenanceId' 列 '' ;列不允许为空。 INSERT 失败 EF 6.1

转载 作者:太空狗 更新时间:2023-10-29 20:36:10 25 4
gpt4 key购买 nike

因此,我尝试在 azure 上向我的数据库添加一个简单的条目,但由于某种原因,数据库没有为该条目生成我的 PK。
下面是用于创建数据库并进行输入的所有代码。
这是在控制台应用程序上的 EF 6.1 上

上下文

public BlizzardDbContext() : base("AzureSqlDb")
{
}

public DbSet<Maintenance> Maintenances { get; set; }

型号

public class Maintenance
{
public Maintenance()
{}

public Maintenance(DateTime start, DateTime end, string info)
{
Start = start;
End = end;
Info = info;
}

[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int MaintenanceId { get; set; }

public DateTime? Start { get; set; }

public DateTime? End { get; set; }

public string Info { get; set; }
}

保存更改时测试失败

var context = new BlizzardDbContext();
context.Maintenances.Add(new Maintenance() {Start = DateTime.Now, End = DateTime.Now, Info = ""});
context.SaveChanges();

我知道这听起来很简单,我以前使用过 EF 几次,但这次不知道出了什么问题这是错误

"Cannot insert the value NULL into column 'MaintenanceId', table '.dbo.Maintenances'; column does not allow nulls. INSERT fails.\r\nThe statement has been terminated."

enter image description here

更新:最终通过删除数据库并重新创建它来解决这个问题,我认为 EF 发生了一些奇怪的事情,它没有正确地通过迁移更新数据库,因为重新创建数据库后,列被设置为身份

最佳答案

只需验证 MaintenanceId 是否是数据库中的身份 key 即可。如果不是或者您不确定可以尝试以下选项

改变

 [DatabaseGenerated(DatabaseGeneratedOption.Identity)]

[DatabaseGenerated(DatabaseGeneratedOption.None)]

.None - 这意味着“数据库不生成值。”

关于c# - 无法将 NULL 值插入表 'MaintenanceId' 列 '<tableName>' ;列不允许为空。 INSERT 失败 EF 6.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36299992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com