如何使用表达式执行连接

时间:2015-11-14 19:28:06

标签: asp.net-mvc entity-framework linq

我正在为我的项目使用实体框架包装器。如果我只使用一个表进行CRUD操作,它工作正常,但不幸的是我无法连接两个表。

我看到有人建议包括我也无法使用。

reference

我也有this,但我无法理解。

我正在共享我的BaseRepository类

get(imageView)

请让我知道我需要在BaseRepository中执行哪些更改,以便我可以执行连接。

1 个答案:

答案 0 :(得分:1)

好吧......所以,看看你的基础知识库看起来你已经有了东西。我最好的猜测是你只是使用存储库模式感到困惑。因此,您向我们展示了采用类型<T>的BaseRepository。您的特定存储库是如何创建的?例如,您必须拥有AccountRepository或ContactRepository,它需要在UnitOfWork类中使用类似这样的通用基础存储库:

private IBaseRepository<Account> _accountRepository;    
    public IBaseRepository<Account> AccountRepository
    {
        get { return _accountRepository ?? (_accountRepository = new BaseRepository<Account>(_databaseFactory)); }
    }

你可以调用如下:

private IBaseRepository<Account> accountRepo { get { return UnitOfWork.AccountRepository; } }

并将其用作accountRepo.Get(),它将为您提供所有帐户的列表。

如果这是您使用存储库的方式,那么您需要为连接做的只是添加另一个实体的存储库:

private IBaseRepository<Contact> contactRepo { get { return UnitOfWork.ContactRepository; } }

并执行以下连接:

return (from c in contactRepo.GetAll()
            join a in accountRepo.GetAll() on c.AccountId equals a.AccountId
            where a.Name == "Test Account Name"
            select c).ToList();

以上内容将为您提供属于该帐户的所有联系人姓名=&#34;测试帐户名称&#34;。

让我知道它是如何为你工作的。