【发布时间】:2023-03-04 10:48:01
【问题描述】:
尝试使用实体框架在我的数据库中插入一行。我在插入时分配了除主键 ID 之外的所有值,并且我希望它由 SQL Server DB 自动递增。
我的表定义/类:
public partial class T_SurfacePick
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public int? BoreholeID { get; set; }
public int? AuthoredNameID { get; set; }
public int? LoadFormat { get; set; }
public double? PickDepth { get; set; }
public int? OwningAuthorID { get; set; }
public int? QualityID { get; set; }
public double? CustomData { get; set; }
}
当我调用SaveChanges() 方法时,我得到一个错误
无法将值 NULL 插入“ID”列
如何让该列自动递增?我不想担心跟踪 ID 并自己分配它。
我正在尝试使用代码优先的方法。这是我的插入/更新决策树的一部分示例:
if (MenefeePick == null) // New top
{
var Pick = new T_SurfacePick { BoreholeID = Wellbore.ID, AuthoredNameID = MenefeeAN.ID, LoadFormat = 1, PickDepth = Menefee, OwningAuthorID = ProgAuthor.ID, QualityID = -1, CustomData = null };
db.T_SurfacePick.Add(Pick);
}
else // Update top
{
MenefeePick.PickDepth = Menefee;
}
db.SaveChanges();
我将进一步说明我的模型使用来自软件产品的现有数据库。
【问题讨论】:
-
你在服务器上设置为
IDENTITY了吗? -
将该列设为主键并将其设置为 AUTO INCREMENT。
-
在行中设置标识。像这样(id int 主键身份(1,1))
-
您能展示一下您的表的架构吗?
-
请添加更多信息。您使用的是什么 EF 方法(代码优先,数据库优先...)。还举一个您用于在数据库中插入记录的代码示例。
标签: c# sql-server entity-framework