MVC2 / LINQ存储库模式有助于初学者

时间:2011-06-30 10:11:43

标签: linq asp.net-mvc-2 interface repository viewmodel

我的存储库中有以下方法,它从我的数据库中返回两个对象的混合,

  public IQueryable <ICustomersAndSitesM> CustomerAndSites
    {
        get
        {
            return from customer in customerTable
                   join site in customerSitesTable
                        on customer.Id equals site.CustomerId
                   select new CustomersAndSitesMix(customer, site);
        }
    }

这是我的ICustomerAndSitesM的接口代码

 interface ICustomersAndSitesM
{
    IQueryable<Customer> Customers { get; }
    IQueryable<CustomerSite> CustomerSites { get; }
}

我正在努力研究如何以及在何处定义CustomersAndSitesMix,这应该是接口中的单独类还是方法?是否需要对客户和客户网站都有明确的定义?

1 个答案:

答案 0 :(得分:0)

我会将CustomersAndSitesMix设置为一个类,其中包含您需要的其他两个表中的所有属性。我不确定你为什么需要这个接口,但我也会将你的方法的返回类型更改为List<CustomersAndSitesMix>并在LINQ查询的末尾添加一个ToList()。然后你会返回两个表的内部联接,这可能是你想要的,或者你可能想要添加一个争论,比如你的函数说CustomerID,这样你就可以传入它并只得到一个子集。