6

私は Entity Framework で Firebird ADO.NET プロバイダーを使用していますが、この質問は他のプロバイダーにも当てはまります。

次のようにモデルにフィールドがあります

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

データベースには、に設定されてJOBNOいる場合にジェネレータを使用してフィールドを更新する「挿入時」トリガーがありますJOBNONULL

モデルのフィールドにDatabaseGenerated属性を設定することで、エンティティ フレームワークは挿入時にデータベースから正しくプルします。DatabaseGeneratedOption.IdentityJOBNO

ただし、挿入時に列を手動で指定したい場合がありますJOBNOが、EFは理解せず、生成された値を使用するだけです。

フィールドのこの条件付き設定を許可する方法はありDataBaseGeneratedますか?

4

1 に答える 1

1

残念ながら、DataBaseGenerated フィールドの条件付き設定を行う方法はありません。

1 番目のオプション: 挿入トリガーの動作を (データベースではなく) アプリケーションに転送することです。この方法では、常にアプリケーションから ID を生成します。

2 番目のオプション: ID を指定せず、データベースで NULLABLE のままにします。このようにして、EF がデータを受信できるようにし、受信しない場合はトリガーから値を取得します。(ただし、トリガーを変更して、指定されていないときに新しい ID を作成するようにしてください!)

于 2013-09-19T15:07:12.573 に答える