gpt4 book ai didi

entity-framework - EF代码优先循环引用

转载 作者:行者123 更新时间:2023-12-03 23:38:49 25 4
gpt4 key购买 nike

我有一系列代表文件夹和文件的对象。文件夹当然可以有文件的集合,但它们也可以有子文件夹。文件夹具有对父文件夹的引用。这可能是麻烦开始的地方。文件夹也可以有与之关联的图标。

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% 知道这里有循环引用。文件夹只引用一次图标,而图标根本不引用文件夹。

一个问题,这可能是相关的,是我不确定如何使 ParentFolderId 正确映射回父文件夹的 FolderId。

有什么想法吗?

最佳答案

您好,更改 Id 而不是 FolderId、IconId,它们是用 [key] 修改的。因为你没有使用映射流代码,而且 EF 只能假定与名称和类型的关系。

它正在工作。

public class Folder
{
[Key]
public int Id { get; set; }

public string FolderName { get; set; }
public virtual int ParentId { get; set; } /*ParentFolderId*/
public virtual Folder Parent { get; set; } /*ParentFolder*/
public virtual int IconId { get; set; }
public virtual Icon Icon { get; set; }

public virtual ICollection<Folder> Children { get; set; } /*not Folders*/

//it is out of subject
//public virtual ICollection<FileInformation> FileInformations { get; // set; }
}

public class Icon
{
[Key]
public int Id { get; set; }

public string IconUrl { get; set; }
public string Description { get; set; }
}

关于entity-framework - EF代码优先循环引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10441662/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com