フォルダーとファイルを表す一連のオブジェクトがあります。もちろん、フォルダーにはファイルのコレクションを含めることができますが、サブフォルダーを含めることもできます。フォルダーには、親フォルダーへの参照があります。これはおそらく問題の始まりです。また、フォルダにはアイコンを関連付けることができます。
public class Folder
{
[Key]
public int FolderId { get; set; }
public string FolderName { get; set; }
public int ParentFolderId { get; set; }
public virtual Folder ParentFolder { get; set; }
public int IconId { get; set; }
public virtual Icon Icon { get; set; }
public virtual ICollection<FileInformation> FileInformations { get; set; }
public virtual ICollection<Folder> Folders { get; set; }
}
public class Icon
{
[Key]
public int IconId { get; set; }
public string IconUrl { get; set; }
public string Description { get; set; }
}
アプリケーションを実行してアイコンのリストを取得しようとすると、次のエラー メッセージが表示されます。
*参照関係は循環参照になり、許可されません。[ 制約名 = FK_Folder_Icon_IconId ]*
循環参照がここにある場合、私は 100% ではありません。フォルダーはアイコンを一度だけ参照し、アイコンはフォルダーをまったく参照しません。
1 つの問題 (これに関連している可能性があります) は、ParentFolderId を親フォルダーの FolderId に正しくマップする方法がわからないことです。
何か案は?