ビジネス要件は次のとおりです。
- すべての従業員をデータベースに保存する必要がある
- アシスタントがいる従業員もいれば、いない従業員もいます
- 一部の従業員には複数のアシスタントがいます
- アシスタントも社員です
明らかに、自己参照の状況が少しあります。しかし、典型的な「Employee-Manager」の状況との違いは、ここでは 1 人の Employee が 0 または複数のアシスタントを持つことができるということです。したがって、従業員と従業員のアシスタントの組み合わせは、従業員とEmployeeAssistantの間の 1 対多の関係で別のテーブルに格納する必要があります。しかし、Entity Framework 6 Code First でこれをモデル化する方法がわかりません。
私はこれから始めました:
public class Employee
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
public class EmployeeAssistant
{
[ForeignKey("Employee")]
public int EmployeeId { get; set; }
public virtual Employee Employee { get; set; }
[ForeignKey("Assistant")]
public int AssistantId { get; set; }
public virtual Employee Assistant { get; set; }
}
しかし、コマンド中にエラーが発生しますUpdate-Database
:
テーブル 'EmployeeAssistant' に FOREIGN KEY 制約 'FK_dbo.EmployeeAssistant_dbo.Employee_EmployeeId' を導入すると、サイクルまたは複数のカスケード パスが発生する可能性があります。ON DELETE NO ACTION または ON UPDATE NO ACTION を指定するか、他の FOREIGN KEY 制約を変更します。
私は何が欠けていますか?これに別の方法でアプローチする必要がありますか?