我正在使用带有Entity Framework的Firebird ADO.NET提供程序,但这个问题也适用于其他提供程序。
我的模型上有一个字段如下
[Column("JOBNO"), DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int JobNo { get; set; }
在数据库中,我有一个'on insert'触发器,如果JOBNO
设置为JOBNO
NULL
字段
通过在我的模型字段上将DatabaseGenerated
属性设置为DatabaseGeneratedOption.Identity
,实体框架在插入时正确地从数据库中提取JOBNO
。
但有时我想在插入时手动指定JOBNO
列,但EF不理解并只使用生成的值。
有没有办法允许DataBaseGenerated
字段的这种条件设置?
答案 0 :(得分:0)
我担心无法为DataBaseGenerated字段进行条件设置!
第一个选项: 是将插入触发器的行为转移到您的应用程序(而不是数据库),这样您将始终从应用程序生成id。
第二个选项: 不要指定标识并在数据库中保留为NULLABLE。这样您将允许EF接收数据,当它没有接收时,您将从触发器获取值。 (但请确保更改触发器,以便在未提供时创建新的ID!)