EF多对数dbset.Include在DAL on GenericRepository [英] EF Many-to-many dbset.Include in DAL on GenericRepository

查看:210
本文介绍了EF多对数dbset.Include在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆