我使用实体框架构建了两个应用程序,我正在尝试使用延迟加载来获取相关实体。在其中一个延迟加载相关实体按预期工作,但我遇到另一个问题。我仍然可以加载相关的实体,但是一旦检索到集合,我只能获得一个单独的实体,即使应该有更多。
我用过:
base.ContextOptions.LazyLoadingEnabled = true;
在我的datacontext中。另外,我将我的相关集合设为虚拟:
public virtual ICollection<Product> Products { get; set; }
我现在花了一天多的时间来寻找两个应用程序之间的差异而我找不到任何应用程序。一个应用程序具有包含事件的位置,并且工作正常。另一个包含产品的类别,那是不起作用的产品。有没有人遇到类似的问题?!我在忽视什么。
问题在于,当我在视图中迭代我的产品时,我只能看到集合中的一个元素:
@foreach(var Product in Model.Products) { @Product.Name }
但是我只得到一个产品名称,即使应该有多个产品名称!
答案 0 :(得分:0)
最近遇到了类似的问题。我们的问题是该表具有多列密钥,但其中一列是可空的,因此它不能用作实体密钥。
从EF的角度来看,我们尝试加载的实体都具有相同的密钥,因此只加载了第一个。
我们必须为此表创建一个唯一的ID列来解决问题。