C# LINQ对实体的一些误解
我有这个linq to实体行:C# LINQ对实体的一些误解,c#,linq,entity-framework,C#,Linq,Entity Framework,我有这个linq to实体行: myentity.CityType.Add(context.Set<SiteCityType>().FindAsync(2)); myentity.CityType.Add(context.Set().FindAsync(2)); 其中实体为myentity和SiteCityType是定义的实体。 而CityType是在myentity实体中定义的导航属性: public virtual ICollection<SiteCityTyp
myentity.CityType.Add(context.Set<SiteCityType>().FindAsync(2));
myentity.CityType.Add(context.Set().FindAsync(2));
其中实体为myentity和SiteCityType是定义的实体。
而CityType是在myentity实体中定义的导航属性:
public virtual ICollection<SiteCityType> CityType { get; set; }
公共虚拟ICollection城市类型{get;set;}
上面的linq行工作正常,但我需要FindAsync方法获取列表:
myentity.CityType.Add(context.Set<SiteCityType>().FindAsync('some list of ints'));
myentity.CityType.Add(context.Set().FindAsync('somelist of int'));
知道如何实现它吗?尝试创建扩展方法:
public static IEnumerable<SiteCityType> FindById(this SiteCityTypeRepository repository, int[] ids)
{
var result = from pr in repository.All()
where ids.Contains(pr.ID)
select pr;
return result.ToList();
}
public static IEnumerable FindById(此SiteCityTypeRepository存储库,int[]id)
{
var result=来自repository.All()中的pr
其中ID.Contains(pr.ID)
选择公关;
返回result.ToList();
}
我建议“All()”方法返回非内存对象,例如IQueryable。
因此,实际的实现取决于您的体系结构。我建议您实现自定义方法(创建存储库并添加您喜欢的方法)。您可以使用Where(siteCityType=>list.Contains(siteCityType.Id))而不是FindAsync@stefchri. add extenntion只获取单个项而不获取集合,因此要使您的示例正常工作存在一个问题为什么我们要实现一些已经存在的东西?(
包含
)。