Entity framework 4 为什么我会出错;无法设置类型Y上的属性X,因为集合已设置为EntityCollection“;?
当我试图在EF4中将一个集合映射到另一个集合时,我遇到了这个错误 无法设置类型“Resource_EF810770B4FCA2E071F38C2F2EE328AAC216CA2A7BF15753E6658A42D7CF53A”上的属性“ResourceLanguages”,因为集合已设置为EntityCollection 我试着这样编码Entity framework 4 为什么我会出错;无法设置类型Y上的属性X,因为集合已设置为EntityCollection“;?,entity-framework-4,Entity Framework 4,当我试图在EF4中将一个集合映射到另一个集合时,我遇到了这个错误 无法设置类型“Resource_EF810770B4FCA2E071F38C2F2EE328AAC216CA2A7BF15753E6658A42D7CF53A”上的属性“ResourceLanguages”,因为集合已设置为EntityCollection 我试着这样编码 foreach (var resource in resources) { resourceLanguages = resourceLanguageRe
foreach (var resource in resources)
{
resourceLanguages = resourceLanguageRepositoty.GetAllByResourceId(resource.Id);
resource.ResourceLanguages = resourceLanguages;
}
有人能帮我解决这个问题吗?在使用代理时,您不能将集合分配给物化导航属性。你找到了一个解决方案,但我认为它看起来相当无效。首先,如果您的资源连接到上下文,则在需要语言时,语言将通过延迟加载进行加载,但您也可以使用快速加载,并在单个查询中加载所有资源及其语言:
var resources = context.Resources.Include("ResourceLanguages").ToList();
您的解决方案会产生N+1个数据库查询,其中N是集合中的资源数。可以像resource.ResourceLanguages.AddRange(ResourceLanguages)那样执行查询<代码>添加范围不是一种ICollection方法