У меня есть вопрос по EF 6. У меня есть следующий оператор внутри моего класса модели данных, который использует для выборки все счета-фактуры, а также связанные с ними данные (PurchaseItems, Customer и CustomerAddress).
public List<Invoice> GetAllInvoice()
{
using (var context = new InvoiceSolutionContext())
{
return context.Invoices.Include(p => p.PurchaseItems).Include(c => c.Customer.Select(ca => ca.CustomerAddress)).ToList();
}
}
Вышеуказанный метод имеет следующие операторы using в классе.
using Invoicing.DomainModel;
с использованием System.Collections.Generic;
с использованием System.Data.Entity;
с использованием System.Linq;
Но проблема в том, что выбор (ca => ca. CustomerAddress) не работает и выдает мне следующую ошибку компиляции.
«Customer» не содержит определения «Select» и отсутствует доступный метод расширения «Select», принимающий первый аргумент типа «Customer» 'может быть найдено (вам не хватает директивы using или ссылки на сборку?)
Ниже приведены мои классы, связанные с вышеуказанной проблемой.
public class Invoice
{
[Key]
public int ID { get; set; }
[Required]
[Column("invoiceNumber")]
[Display(Name = "Invoice Number")]
public string InvoiceNumber { get; set; }
[Required]
[Column("description")]
public string Description { get; set; }
[Required]
public List<PurchaseItem> PurchaseItems { get; set; }
[Required]
[Column("totalCost")]
[Display(Name = "Total Cost")]
public decimal TotalCost { get; set; }
[Required]
[Column("taxTotal")]
[Display(Name = "Tax Amount")]
public decimal TaxAmount { get; set; }
[Column("otherCost")]
[Display(Name = "Other Cost")]
public decimal OtherCost { get; set; }
[Required]
[Column("subTotal")]
[Display(Name = "Sub Total")]
public decimal SubTotal { get; set; }
#region Foreign Key Ref
[Column("customerID")]
public int CustomerID { get; set; }
public Customer Customer { get; set; }
[Column("accountID")]
public int AccountID { get; set; }
public Account Account { get; set; }
#endregion
[Column("dateCreated")]
public DateTime DateCreated { get; set; }
[Column("dateModified")]
public DateTime DateModified { get; set; }
[Column("status")]
public bool Status { get; set; }
}
public class PurchaseItem
{
[Key]
public int ID { get; set; }
[Required]
[Column("description")]
public string Description { get; set; }
[Required]
[Column("unitPrice")]
[Display(Name = "Unit Price")]
public decimal UnitPrice { get; set; }
[Required]
[Column("quantity")]
public int Quantity { get; set; }
[Required]
[Column("amount")]
public decimal Amount { get; set; }
//foreign key reference
[Column("invoiceID")]
public int InvoiceID { get; set; }
public Invoice Invoice { get; set; }
}
public class Customer
{
[Key]
public int ID { get; set; }
[Required]
[Column("firstName")]
[MaxLength(250, ErrorMessage ="First name must have 250 characters or less")]
[Display(Name ="First Name")]
public string FirstName { get; set; }
[Required]
[Column("lastName")]
[MaxLength(250, ErrorMessage ="Last name must have 250 characters or less")]
[Display(Name ="Last Name")]
public string LastName { get; set; }
[Required]
[Column("emailAddress")]
[MaxLength(255, ErrorMessage ="Email address must have 255 characters or less")]
[DataType(DataType.EmailAddress)]
[Display(Name = "Email Address")]
public string EmailAddress { get; set; }
[Required]
[Column("contactNumber")]
[Display(Name ="Contact Number")]
public string ContactNumber { get; set; }
[Column("abn")]
public string ABN { get; set; }
[Column("dateCreated")]
public DateTime DateCreated { get; set; }
[Column("dateModified")]
public DateTime DateModified { get; set; }
[Column("status")]
public bool Status { get; set; }
public List<Invoice> Invoices { get; set; }
public CustomerAddress CustomerAddress { get; set; }
}
public class CustomerAddress
{
[Key, ForeignKey("Customer")]
public int ID { get; set; }
[Required]
[Column("buildingNumber")]
[MaxLength(255, ErrorMessage ="Building number must have 255 characters or less")]
[Display(Name ="Building Number")]
public string BuildingNumber { get; set; }
[Required]
[Column("streetName")]
[MaxLength(255, ErrorMessage ="Street name must have 255 characters or less")]
[Display(Name ="Street Name")]
public string StreetName { get; set; }
[Required]
[Column("suburb")]
[MaxLength(255, ErrorMessage ="Suburb must have 255 characters or less")]
public string Suburb { get; set; }
[Required]
[Column("state")]
public string State { get; set; }
[Column("postCode")]
[Display(Name ="Postcode")]
public int PostCode { get; set; }
public Customer Customer { get; set; }
}
Может кто-нибудь сказать мне, в чем здесь проблема, пожалуйста? Оцените вашу помощь в этом
РЕДАКТИРОВАТЬ: Ниже приведена диаграмма класса