EF多对数dbset.Include在DAL on GenericRepository [英] EF Many-to-many dbset.Include in DAL on GenericRepository
问题描述
如果我的生活依赖于...,我无法获取QueryObjectGraph来添加INCLUDE子表。在第三天停留的东西应该很简单: - /
I can't get the QueryObjectGraph to add INCLUDE child tables if my life depended on it...what am I missing? Stuck for third day on something that should be simple :-/
DAL:
public abstract class RepositoryBase<T> where T : class
{
private MyLPL2Context dataContext;
private readonly IDbSet<T> dbset;
protected RepositoryBase(IDatabaseFactory databaseFactory)
{
DatabaseFactory = databaseFactory;
dbset = DataContext.Set<T>();
DataContext.Configuration.LazyLoadingEnabled = true;
}
protected IDatabaseFactory DatabaseFactory
{
get;
private set;
}
protected MyLPL2Context DataContext
{
get { return dataContext ?? (dataContext = DatabaseFactory.Get()); }
}
public IQueryable<T> QueryObjectGraph(Expression<Func<T, bool>> filter,
params string[] children)
{
foreach (var child in children)
{
dbset.Include(child);
}
return dbset.Where(filter);
}
...
DAL存储库
... DAL repositories
public interface IBreed_TranslatedSqlRepository : ISqlRepository<Breed_Translated>
{
}
public class Breed_TranslatedSqlRepository : RepositoryBase<Breed_Translated>,
IBreed_TranslatedSqlRepository
{
public Breed_TranslatedSqlRepository(IDatabaseFactory databaseFactory)
: base(databaseFactory)
{}
}
BLL回购:
public IQueryable<Breed_Translated>
QueryObjectGraph(Expression<Func<Breed_Translated, bool>> filter,
params string[] children)
{
return _r.QueryObjectGraph(filter, children);
}
控制器:
var breeds1 = _breedTranslatedRepository
.QueryObjectGraph(b => b.Culture == culture, new string[] { "AnimalType_Breed" })
.ToList();
我无法找到 Breed.AnimalType_Breed.AnimalTypeId
..我可以钻到Breed.AnimalType_Breed然后intelisense期望一个表达式?
I can't get to Breed.AnimalType_Breed.AnimalTypeId
..I can drill as far as Breed.AnimalType_Breed then the intelisense expects an expression?
提示如果有的话,数据库表:粗体是多对多
Breed,Breed_Translated, AnimalType_Breed ,AnimalType,...
Cues if any, DB Tables: bold is many-to-many Breed, Breed_Translated, AnimalType_Breed, AnimalType, ...
推荐答案
AnimalBreed_Type
表示许多关系,因此 Breed_Translated
实体中的 AnimalBreed_Type
属性集!集合类型没有您的表属性。您必须使用 First
或 Single
从此集合中获取单个相关实体,并检查它的 AnimalTypeId
。
AnimalBreed_Type
represents many to many relation so the AnimalBreed_Type
property in Breed_Translated
entity is collection! The collection type doesn't have your table properties. You must use First
or Single
to get single related entity from this collection and check it's AnimalTypeId
.
这篇关于EF多对数dbset.Include在DAL on GenericRepository的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!