使用Entity Framework插入时有条件地设置Identity字段

时间:2013-09-16 05:25:47

标签: c# entity-framework firebird

我正在使用带有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字段的这种条件设置?

1 个答案:

答案 0 :(得分:0)

我担心无法为DataBaseGenerated字段进行条件设置

第一个选项: 是将插入触发器的行为转移到您的应用程序(而不是数据库),这样您将始终从应用程序生成id。

第二个选项: 不要指定标识并在数据库中保留为NULLABLE。这样您将允许EF接收数据,当它没有接收时,您将从触发器获取值。 (但请确保更改触发器,以便在未提供时创建新的ID!)