【发布时间】:2020-03-15 08:15:27
【问题描述】:
在我的 Entity Framework 6 应用程序中,我有一张人们的电子邮件地址表:
public class EmailAddress
{
public int Id { get; set; }
public int PersonId { get; set; }
public string EmailAddress { get; set; }
public virtual Person Person { get; set; }
}
Person 对象也引用了这些电子邮件地址:
public class Person
{
public int Id { get; set; }
{...}
public virtual ICollection<EmailAddress> EmailAddresses { get; set; }
}
如果我想获取一个人的所有电子邮件地址并检查该人是否实际存在,以下两种方法是否更有效:
-
在
Persons表上运行Any()查询,然后在EmailAddresses表上运行另一个查询,使用PersonId作为参数:public IEnumerable<EmailAddress> GetAddressesByPerson(int personId) { if (!Context.Persons.Any(x => x.Id == personId)) { throw new Exception("Person not found"); } return Context.EmailAddresses.Where(x => x.PersonId == personId).ToList(); } -
获取
Person对象并返回EmailAddresses导航属性:public IEnumerable<EmailAddress> GetAddressesByPerson(int personId) { var person = Context.Persons.Find(personId); if (person == null) { throw new Exception("Person not found") } return person.EmailAddress; }
【问题讨论】:
标签: c# entity-framework linq