最初に、Unable to determine the principal end of an association between the types
エラーに関する多くの投稿がありますが、ごめんなさい。モデルに2番目の自己参照FKを追加できません。元の終了エラーを特定できません。
自己を2回参照するようになるEntityを構築しました。最初の自己参照のためにコードを挿入すると、すぐに広告が2番目のコードが破損するとすぐに正常に動作します。いくつかのテストを行っていますが、自己参照のいずれかを自己によって使用すると、すべてがうまく動作することがわかりました。それは、それが壊れた2番目の自己参照を追加するときだけです。自己参照のための私が使用していたコードは次のとおりです。
[ForeignKey("ManagerID")]
public User Manager { get; set; }
//Auditing Fields
public DateTime DateCreated { get; set; }
public int? UpdatedByUserID { get; set; }
public DateTime? DateUpdated { get; set; }
public DateTime LastAutoUpdate { get; set; }
[ForeignKey("UpdatedByUserID")]
public User UpdatedByUser { get; set; }
完全なエンティティのコードブロックは次のとおりです。私はそれが第二の自己参照が破損する場合が行方不明です何
public class User
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public int ADPFileNumber { get; set; }
[Required]
public string ADUserName { get; set; }
public int AirCardCheckInLateCount { get; set; }
[Required]
public string Email { get; set; }
public DateTime? EndDate { get; set; }
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
public int ManagerID { get; set; }
public string MobilePhone { get; set; }
[Required]
public string Office { get; set; }
[Required]
public string Phone { get; set; }
public decimal PTO { get; set; }
public DateTime StartDate { get; set; }
public int VehicleCheckInLateCount { get; set; }
public int WexCardDriverID { get; set; }
[ForeignKey("ManagerID")]
public User Manager { get; set; }
//Auditing Fields
public DateTime DateCreated { get; set; }
public int? UpdatedByUserID { get; set; }
public DateTime? DateUpdated { get; set; }
public DateTime LastAutoUpdate { get; set; }
[ForeignKey("UpdatedByUserID")]
public User UpdatedByUser { get; set; }
}
?
のためには作成しません。しかし、これは唯一の方法ですか?むしろ、クラス内のエンティティ定義全体を分割しないでください。 – Matthew
ルイスが提案した2つの逆コレクションプロパティを使うことができます(ただし、 '[InverseProperty]'属性も使用できます)。これらがなければ(あなたが好むように思われる)、唯一の方法は流暢なマッピングを使用することです。 –