我在EF Core中加载实体时遇到一些问题,不确定是否以错误的方式使用它,或者这是否是错误?
例如:
```{r, output = 'asis', echo=FALSE, results = 'asis'}
D <- data.frame(matrix(ncol = 3,nrow = 5))
names(D)[names(D) == "X1"] <- "Word"
names(D)[names(D) == "X2"] <- "Meaning"
names(D)[names(D) == "X3"] <- "Source"
D$Word <- rbind("hello", "hellohello", "hellohellohello", "hellohellohellohello", "hellohellohellohellohello")
D$Meaning <- rbind("world", "worldworld", "worldworldworld", "worldworldworldworld", "worldworldworldworldworld")
D$Source <- rbind("","","","", "This is a source.")
D[D == ""] <- NA
for (i in 1:length(D$Meaning)){
cat(paste("**",D$Word[i],"**","\n",": ",
D$Meaning[i],"\n", sep = ""))
}
```
我的用于加载实体的代码如下:
public class Root
{
public Contained ContainedReference { get; set; }
}
public class Contained
{
public Contained AnotherContainedReference { get; set; }
public System.Collections.Generic.ICollection<Root> Roots { get; set; } //Backreference
}
在我的情况下,我想加载以下结构: Root.ContainedReference
我得到的是: Root.ContainedReference.AnotherContainedReference
我如何告诉EF Core它应该加载包含ContainedReference的Root,而不要加载ContainedReference中的AnotherContainedReference?
如果我现在尝试更新(DBContext.Update(Root)),它将失败,因为在对Contained.Roots和EF Core进行迭代时存在循环。
无法跟踪实体类型“ Root”的实例,因为已经跟踪了另一个键值为“ {Id}”的实例。附加现有实体时,请确保仅附加一个具有给定键值的实体实例。
由于反向引用(包含的根目录,不应加载)
提前谢谢
克里斯
答案 0 :(得分:0)
我认为我在https://github.com/aspnet/EntityFrameworkCore/issues/11564上找到了答案
我只是清除导航属性以使其开始工作,但没有最终解决方案。 也许他们会在不久的将来实现这种功能。