CF实体框架在复合实体之间搜索
本文关键字:实体 之间 搜索 复合 框架 CF | 更新日期: 2023-09-27 18:19:41
假设我在一个实体框架中有三个模型,首先使用代码,一个是主模型,与另一个有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关系中
来自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"));
从Model
:返回ModelDetail
context.Models
.SelectMany(m => m.modelInfo)
.Select(mi => mi.modelDetail)
.Where(md => md.modelDetail == "findme");