6

我将 Firebird ADO.NET 提供程序与 Entity Framework 一起使用,但这个问题也适用于其他提供程序。

我的模型上有一个字段如下

    [Column("JOBNO"), DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int JobNo { get; set; }

在数据库中,我有一个“插入”触发器,如果​​设置为,JOBNO则使用生成器更新字段JOBNONULL

通过在我的模型字段上设置DatabaseGenerated属性DatabaseGeneratedOption.Identity,实体框架JOBNO在插入时正确地从数据库中提取。

但是有时我想JOBNO在插入时手动指定列,但 EF 不理解,只使用生成的值。

有没有办法允许对DataBaseGenerated字段进行这种条件设置?

4

1 回答 1

1

恐怕没有办法对 DataBaseGenerated 字段进行条件设置

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

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

于 2013-09-19T15:07:12.573 回答