NoP*_*God 6 c# firebird entity-framework
我正在使用带有Entity Framework的Firebird ADO.NET提供程序,但这个问题也适用于其他提供程序.
我的模型上有一个字段如下
[Column("JOBNO"), DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int JobNo { get; set; }
Run Code Online (Sandbox Code Playgroud)
在数据库中,我有一个'on insert'触发器,JOBNO如果JOBNO设置为,则使用生成器更新字段NULL
通过在我的模型字段上设置DatabaseGenerated属性DatabaseGeneratedOption.Identity,实体框架正确地JOBNO从插入数据库中提取数据.
但有时我想JOBNO在插入时手动指定列,但EF不理解并只使用生成的值.
有没有办法允许这个DataBaseGenerated字段的条件设置?
恐怕没有办法对 DataBaseGenerate 字段进行条件设置!
第一个选项: 是将插入触发器的行为转移到您的应用程序(而不是数据库),这样您将始终从应用程序生成 id。
第二个选项: 不指定身份并在数据库上保留为 NULLABLE。这样您将允许 EF 接收数据,当它没有接收时,您可以从触发器获取值。(但请确保更改触发器,以便在未提供时创建一个新的 id!)