包含原因OutOfMemoryException

时间:2014-06-25 13:21:34

标签: c# entity-framework ef-code-first ef-fluent-api

使用带有Code First方法的Entity Framework时,我遇到了一个非常奇怪的问题。 我已禁用延迟加载,并在需要时使用include语句。 不幸的是,我无法向您展示代码,但会尽量详细解释。

我有两个表,其中一个是指另一个:

TableA (ID, Name)
TableB (ID, ForeignKeyTableA)

相应的课程:

public class A
{
   public int ID { get; set; }
   public string Name { get; set; }
}

public class B
{
   public int ID { get; set; }
   public A ClassA { get; set; }
}

我可以自己加载A和B而没有问题,但是当我写例如: 在加载B并最终调用ToList()时包含(p => p.A)它会在一段时间后导致OutOfMemoryException。

这些表格并不大。表A有大约600条记录和表B 5记录。

A类的映射如下所示:

this.ToTable("TableA");
this.HasKey(p => p.ID);
this.Property(p => p.ID).HasColumnName("ID");
this.Property(p => p.ID).HasColumnName("Name");

B类的映射如下所示:

this.ToTable("TableB");
this.HasKey(p => p.ID);
this.Property(p => p.ID).HasColumnName("ID");

HasRequired(p => p.A).WithOptional()
   .Map(m => m.MapKey("ForeignKeyTableA"));

我需要映射它们,因为列和表名不符合惯例。 Include可以在其他对象上使用而没有任何问题。

最奇怪的是,当我使用Include()时,数据库永远不会被命中。

有人有建议吗?因为我现在真的没想完了。

0 个答案:

没有答案