【发布时间】:2016-11-25 14:36:58
【问题描述】:
我在 SQL 中尝试做的事情如下所示:
SELECT
....
ct.FirstName + ' ' + ct.LastName
....
FROM
Leads l
LEFT JOIN LeadContacts lc ON lc.LeadID = l.LeadID
LEFT JOIN Contacts ct on ct.ContactID = lc.ContactID
在领先模型中:
public class Lead
{
....
public virtual ICollection<LeadContact> LeadContacts { get; set; }
....
}
在 LeadContact 模型中:
public class LeadContact
{
....
[ForeignKey(nameof(LeadID))]
public virtual Lead Lead { get; set; }
[ForeignKey(nameof(ContactID))]
public virtual Contact Contact { get; set; }
....
}
现在,我正在尝试从以下实例构建一个对象:
leads = IQueryable<Lead>...
对于我来说,我不知道如何导航到联系人表。
var results = leads.Select(l => new QuoteSearchItem
{
....
SomeProperty = l.SomeProperty,
LeadSales = l.LeadContacts. ?????
SomeOtherProperty = l.SomeOtherProperty
....
});
QuoteSearchItem.LeadSales 是一个字符串。它必须是:
Contacts.FirstName + " " + Contacts.LastName
由于关系类型,l.LeadContacts.Contacts 不是一个选项。
我需要做什么才能做到这一点?
【问题讨论】:
-
LeadContact 中真的有比 Lead 和 Contact 更多的字段吗?如果没有,EF 将简化您的访问,您可以直接在
Lead类中创建public virtual ICollection<Contact> Contacts {get;set;}(也可以在Contact类中创建public virtual ICollection<Lead> Leads {get;set;})。
标签: c# sql asp.net entity-framework linq