1

我使用实体框架构建了两个应用程序,并尝试使用延迟加载来获取相关实体。其中一个延迟加载相关实体按预期工作,但我遇到另一个问题。我仍然可以加载相关实体,但是一旦检索到集合,我只会得到一个实体,即使应该有更多。

我用了:

base.ContextOptions.LazyLoadingEnabled = true;

在我的数据上下文中。此外,我将我的相关收藏设为虚拟:

public virtual ICollection<Product> Products { get; set; }

我现在花了一天多的时间来寻找这两个应用程序之间的区别,但我找不到任何东西。一个应用程序的位置包含事件并且工作正常。另一个有包含产品的类别,那是不工作的。有没有人遇到过类似的问题?!我在俯瞰什么。

问题是,当我在视图中迭代我的产品时,我只能看到集合中的一个元素:

@foreach(var Product in Model.Products) { @Product.Name }

但是后来我只得到一个产品名称,甚至应该不止一个!

4

1 回答 1

0

最近遇到一个类似的问题。我们的问题是该表有一个多列键,但其中一列可以为空,因此它不能用作实体键。

从 EF 的角度来看,我们尝试加载的实体都具有相同的密钥,因此只加载了第一个。

我们必须为这个表创建一个唯一的 ID 列来解决这个问题。

于 2015-08-28T14:52:19.730 回答