当我尝试将一个集合映射到 EF4 中的另一个集合时,出现此错误。
无法设置类型“Resource_EF810770B4FCA2E071F38C2F2EE328AAC216CA2A7BF157503E6658A42D7CF53A”的属性“ResourceLanguages”,因为集合已设置为 EntityCollection。
我试图像这样编码
foreach (var resource in resources)
{
resourceLanguages = resourceLanguageRepositoty.GetAllByResourceId(resource.Id);
resource.ResourceLanguages = resourceLanguages;
}
谁能帮我解决这个问题吗?
使用代理时,无法将集合分配给具体化导航属性。您找到了一种解决方案,但恕我直言,它看起来非常无效。首先,如果您的资源附加到上下文,则在需要语言时将通过延迟加载来加载语言,但您也可以使用预先加载并在单个查询中加载所有资源及其语言:
var resources = context.Resources.Include("ResourceLanguages").ToList();
您的解决方案会导致 N+1 数据库查询,其中 N 是集合中的资源数量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)