[英]Entity Framework, select many to many
我首先使用實體框架代碼。
我有以下表格:
Companies : PK ID int, Name, ...
Customers : PK ID int, Name, ...
CustomersCompanies : CustomerID, CompanyID
我可以毫無問題地創建客戶和公司。 但是我不知道如何讓客戶擁有所有公司。
我試過了
_customer = ...
var companies = from c in _db.Companies
where c.Customers.Contains(_customer)
select c;
但是公司不包含任何東西...
使用正確創建的實體,您應該可以調用:
var companies = _customer.Companies;
您必須在Customer
類中具有ICollection<Company>
,在Company
類中具有ICollection<Customer>
。
查閱本教程: 首先使用代碼創建多對多映射 。
如果您首先使用代碼,則可以將“公司”的虛擬集合添加到“客戶”類,並將“客戶”的虛擬集合添加到“公司”類:
public class Customer
{
public int Id { get; set; }
public virtual ICollection<Company> Companies { get; set; }
}
public class Company
{
public int Id { get; set; }
public virtual ICollection<Customer> Customers { get; set; }
}
然后吸引客戶並包括他們的公司,您可以:
var customers = _db.Customers.Include(x => x.Companies);
我不確定您的_db類是什么樣子,所以我不知道您是否只是將實體集合作為其屬性。 通常,我使用具有GetDbSet方法的實體框架DbContext。 所以我會做類似的事情:
var customers = _dbContext.GetDbSet<Customer>().Include(x => x.Companies);
希望有幫助!
嘗試按客戶ID進行比較,例如:
_customer = ...
var companies = from c in _db.Companies
where c.Customers.Where(x => x.CustomerID == c.CompanyID)
select c;
或更短:
var comapnies = _db.Companies.Select(x => x.CustomerID == c.CompanyID);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.