我首先使用Entity Framework代码。
我有以下表格:
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;
但公司不包含任何内容......
答案 0 :(得分:0)
使用正确创建的实体,您应该可以致电:
var companies = _customer.Companies;
您必须在ICollection<Company>
课程中Customer
和ICollection<Customer>
课程内Company
。
答案 1 :(得分:0)
如果您首先使用代码,则只需向您的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);
希望有所帮助!
答案 2 :(得分:0)
尝试按客户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);