最初にエンティティ フレームワークとコードを使用するプロジェクトに取り組んでいます。これが私の短縮クラスです
public class BenefitsForm : IAnnualForm, IAuditable
{
public BenefitsUser UserInfo { get; set; }
public CoverageLevel Medical { get; set; }
}
public class MedicalPlan : IHealthPlan
{
public int Id { get; set; }
public virtual IList<CoverageLevel> CoverageLevels { get; set; }
}
public class CoverageLevel
{
public int Id { get; set; }
public virtual MedicalPlan MedicalPlan { get; set; }
}
各 MedicalPlan には 4 つの補償レベルがあります。私はすでに自分の補償レベルと医療計画をデータベースに作成しています。ただし、BenefitsForm を作成すると、クラスのエントリが重複して作成されます (既にデータベースに存在します)。これを防ぐにはどうすればよいですか?これがどのように発生するかを示す小さなコード スニペットを次に示します。
BenefitsForm form = new BenefitsForm() { UserInfo = new BenefitsUser() };
using(var repo = new CoverageLevelRepository())
{
form.Medical = repo.Retrieve(new NumericKey(formId))); //this retrieves the coveragelevel with the id I want.
}
formRepository.Create(form); // this creates a duplicate med plan and 4 duplicate coverage levels.
formRepository.SaveChanges();