实体框架代码优先 - 还原相同类型的集合



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

我的类看起来像这样:

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。住宿和目的地。住宿2)为空。如何恢复相应的集合?如果我的类只有一个特定类型的集合,我可以执行以下操作:

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

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

除了使用 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:

朱莉

最新更新