使用实体框架插入时有条件地设置“标识”字段
本文关键字:设置 标识 字段 有条件 实体 框架 插入 | 更新日期: 2023-09-27 18:31:28
我正在使用带有实体框架的Firebird ADO.NET 提供程序,但此问题也适用于其他提供程序。
我的模型上有一个字段,如下所示
[Column("JOBNO"), DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int JobNo { get; set; }
在数据库中,我有一个"插入时"触发器,如果JOBNO
设置为NULL
,则使用生成器更新JOBNO
字段
通过将 DatabaseGenerated
属性设置为DatabaseGeneratedOption.Identity
我的模型字段,实体框架可以在插入时正确地从数据库中提取JOBNO
。
但是有时我想在插入时手动指定JOBNO
列,但 EF 不理解,只使用生成的值。
有没有办法允许DataBaseGenerated
字段的这种条件设置?
恐
怕没有办法对数据库生成的字段进行条件设置!
第一个选项:是将插入触发器的行为转移到应用程序(而不是数据库),这样您将始终从应用程序生成 id。
第二个选项:不是指定标识并在数据库上保留为 NULLABLE。这样,你将允许 EF 接收数据,当它未收到时,你将从触发器获取值。 (但请确保更改触发器,以便在未提供时创建一个新 id!