質問: null; if (service.AddLastPrescription(appointment.Id, schedule.PacienteId)) .... ``` 問題は、「appointment.Id」がゼロになり、サービス関数の呼び出しが失敗することです(FKエラー)。 この動作は3.0で予期されていましたか? 更新 -- AddAsync関数 ``` private DbSet dbSet; public async Task AddAsync(T t) { await dbSet.AddAsync(t); } ``` TはModelBaseです。 ``` public class ModelBase { [Key] public int Id { get; set; } public DateTime CreatedAt { get; set; } public DateTime UpdatedAt { get; set; } } ```
回答: > この動作は3.0で予期されていましたか? > > はい、これは3.0の重大な変更の 1つです。 一時キーの値がエンティティインスタンスに設定されなくなりました 。 提案されている解決策は次のとおりです。 > * ストアで生成されたキーを使用しません。 > * 外部キー値を設定する代わりに、ナビゲーションプロパティを設定して関係を形成します。 > * エンティティの追跡情報から実際の一時キーの値を取得します。たとえば、 `context.Entry(blog).Property(e => e.Id).CurrentValu` eは、 `blog.Id`自体が設定されていなくても一時的な値を返します。 > オプション#1は意味がありません(影響を受ける場所はすでにストア生成キーを使用しているようです)。 ナビゲーションプロパティがある場合は、オプション#2をお勧めします。 オプション#3は以前の動作に近いですが、dbコンテキストへのアクセスが必要です。