1

假设我在使用代码优先的实体框架中有三个模型,一个是主要模型,与另一个模型具有 1-n 关系,与第三个模型具有 1-1 关系。

例如

public class Model {
  [Key]
  public int Id {get; set;}

  public string value {get; set;}

  // 1-N relationship to modelInfo
  public virtual ICollection<ModelInfo> modelInfo {get; set;}
}

public class ModelInfo {
  [Key]
  public int Id {get; set;}

  public string value2 {get; set;}

  // 1-1 relationship between modelInfo and modelDetail
  public virtual ModelDetail {get; set;}

  [Required]
  // link back to the model
  public virtual Model model;
}

public class ModelDetail {
  [Key]
  public int Id {get; set;}

  public string modelDetail {get; set;}

  [Required]
  // 1-1 link back to the modelInfo
  public virtual ModelInfo modelInfo;
}

现在给定该模型,假设您已经从先前的 linq 查询中获得了模型集合。

IQueryable<Model> models;

并且您需要找到哪个模型与具有 modelDetail = "findme" 的 ModelDetail 相关联?使用 linq 语法..或者这甚至可能吗?

就像是

 ModelDetail foundit = models.Where( m => m..??.. modelDetail=="findme" );

我迷失在 Model 和 ModelInfo 之间的 1-N 关系中

4

1 回答 1

1

来自ModelDetail

context.ModelDetails
       .Where(md => md.modelDetail == "findme")
       .Select(md => md.modelInfo.model)

或来自ModelInfo

context.ModelInfos
       .Where(mi => mi.modelDetail.modelDetail == "findme")
       .Select(mi => mi.model);

或来自Model

context.Models
       .Where(m => m.modelInfo
                    .Any(mi => mi.modelDetail.modelDetail == "findme"));

ModelDetail从返回Model

context.Models
       .SelectMany(m => m.modelInfo)
       .Select(mi => mi.modelDetail)
       .Where(md => md.modelDetail == "findme");
于 2013-06-25T01:28:17.743 回答