私はEntity Frameworkを初めて使用しています。コレクションを使用してオブジェクトを作成しようとしています(コレクションのすべてのオブジェクトを作成したいデータベースでも同様ですが)私はいくつかの外部キー違反を持っています。エンティティフレームワークの1対多の挿入 - 外部キー違反
私のサンプル表:
table APPOINTMENTS: ID, VAR1, DATE_APPOINTMENT
table GUESTS: ID, APPOINTMENT_ID, USER_ID, VAR2, VAR3
私のテストコード:のDomainServiceで
DomainService aux = new DomainService();
APPOINTMENTS appointment = new APPOINTMENTS();
appointment.VAR1 = "BLA";
appointment.DATE_APPOINTMENT = new DateTime();
//The user with id = 1 is already created in the database
appointment.GUESTS.Add(new GUESTS { USER_ID = 1, VAR2 = 1, VAR3 = "F" });
aux.InsertAppointment(appointment);
私が持っている:
public void InsertAppointment(APPOINTMENTS appointment)
{
using (var context = this.ObjectContext)
{
context.AddToAPPOINTMENTS(appointment);
context.SaveChanges();
}
}
しかし、私はこのエラーを取得しています: { "ORA -02291:整合性制約(FK_GUESTS_APPOINTMENTS)違反 - 親キーが見つかりません "}
私は間違っていますか?
UPDATE: IDをデータベースに作成するには、挿入する前に各テーブルのシーケンスとトリガーを使用して次の値を取得しています。 1つのオブジェクトを作成すると、ゲストなしのアポイントメントは、データベースに挿入され、IDを生成します。
私は正確に行っている上に、私のモデルクラスに
プロパティを追加しましたEFと同じことは私のために働く。両方のテーブルのプライマリキーは自動番号です。私はデータストレージのためのSQL Serverを使用しています –
私はシーケンスと挿入前にトリガを使用しています...ゲストなしでアポイントメントを作成しようとするとIDが生成され、既存のappointmentIDを持つゲストを作成しようとすると正しく動作します – Canastro
@MuhammadAdeelZahid彼はSQL ServerではなくOracleを使用しています –