Entity Framework が子オブジェクトを保存しないようにする方法
Entity Framework を使用する場合、エンティティを保存すると、関連付けられた子エンティティを誤って保存しようとする場合があります。これを修正し、指定されたエンティティのみを永続化するには、次のアプローチを検討してください。
EntityState を使用する
子オブジェクトの EntityState を Unchanged に設定して、Entity Framework に通知できます。それを残すuntouched:
using (var context = new DatabaseContext()) { context.Set<School>().Add(newItem); context.Entry(newItem.City).State = EntityState.Unchanged; context.SaveChanges(); }
外部キーの利用
より柔軟なアプローチには、外部キーの利用が含まれます。エンティティを定義するときは、子エンティティで外部キー プロパティを指定し、親エンティティで対応する主キー プロパティを指定します。
public class City { public int Id { get; set; } public string Name { get; set; } } public class School { public int Id { get; set; } public string Name { get; set; } [ForeignKey("City_Id")] public City City { get; set; } [Required] public int City_Id { get; set; } }
エンティティの挿入中に、子オブジェクトの外部キー プロパティを明示的に設定し、親オブジェクトの外部キー プロパティを設定します。 Navigation プロパティを null:
public School Insert(School newItem, int cityId) { if (cityId <= 0) { throw new Exception("City ID not provided"); } newItem.City = null; newItem.City_Id = cityId; using (var context = new DatabaseContext()) { context.Set<School>().Add(newItem); context.SaveChanges(); } }
これらの手法に従うことで、子オブジェクトの永続性を制御し、必要なエンティティのみが保存されるようにすることができます。潜在的な整合性の問題を防ぎます。
以上が親エンティティを保存するときに Entity Framework が子エンティティを保存しないようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。