0

我首先使用实体​​框架代码。我试图创建的类包含两个集合(相同类型)。我在恢复我各自的收藏时遇到问题。

我的课程如下所示:

public class Destination
{   
    public int DestinationId { get; set; } 
    public string Name { get; set; } 
    public List<Lodging> Lodgings { get; set; }           
    public List<Lodging> Lodgings2 { get; set; }
}
public class Lodging
{  
    public int LodgingId { get; set; } 
    public string Name { get; set; } 
    public Destination Destination { get; set; }
}

我创建了一个新的目的地,然后我重新打开(关闭并打开)数据库连接。当我检索目的地时,我的集合(dest.Lodgings 和 dest.Lodgings2)为空。如何恢复各自的收藏?如果我的班级只有一个特定类型的集合,我可以执行以下操作:

var lodgings = context.Lodgings.Where(l => l.Destination.DestinationId == destId).ToList();

我可以看到关系在数据库模式(Destination_DestinationId1 和 Destination_DestinationId2)中得到维护,但我似乎无法找到它们。任何建议将不胜感激。

4

1 回答 1

1

除了使用 Include (如您所见)(在检索目的地的同时从数据库加载相关数据),您还可以在事后检索住宿。因此,如果您查询目的地然后想要住宿,那是可能的。一种方法称为显式加载,您将使用 Load 方法。另一种是延迟加载,它要求以特定方式设置您的类,仅提及Lodgings 属性就会触发对数据库的调用以检索它们。

Ef 团队博客上有一篇很棒的博客文章,介绍了使用 DbContext 加载相关数据的各种方法:http: //blogs.msdn.com/b/adonet/archive/2011/01/31/using-dbcontext-in-ef -feature-ctp5-part-6-loading-related-entities.aspx

hth

朱丽叶

于 2012-04-21T01:30:17.463 回答