Это не так ...
Проблема заключается в том, как я использую модель EF Customer.
Определение YeagerTechEntities () следующее:
namespace YeagerTechModel
{
public class YeagerTechEntities : ObjectContext
{
public YeagerTechEntities();
public YeagerTechEntities(EntityConnection connection);
public YeagerTechEntities(string connectionString);
public ObjectSet<Customer> Customers { get; }
public void AddToCustomers(Customer customer);
}
}
Определение DbContext.Customers следующее:
public ObjectSet<Customer> Customers { get; }
Мой метод внутри моего сервиса определен следующим образом:
public IEnumerable<Customer> GetCustomers()
{
YeagerTechEntities DbContext = new YeagerTechEntities();
IEnumerable<Customer> customer = DbContext.Customers.Where(p => p.City.StartsWith("A"));
Приведенная выше строка дает мне следующую ошибку времени компиляции.
Cannot implicity convert type 'System.Linq.IQueryable<YeagerTechModel.Customer> to System.Collections.Generic.IEnumerable<YeagerTechWcfservice.Customer>'
Это отчасти потому, что у меня есть следующий DataContract в моем интерфейсе для веб-сервиса, который имеет пространство имен YeagerTechWcfservice.
[DataContract]
public class Customer
{
[DataMember]
public Int16 CustomerID { get; set; }
[DataMember]
public String Email { get; set; }
[DataMember]
public String Company { get; set; }
[DataMember]
public String FirstName { get; set; }
[DataMember]
public String LastName { get; set; }
[DataMember]
public String Address1 { get; set; }
[DataMember]
public String Address2 { get; set; }
[DataMember]
public String City { get; set; }
[DataMember]
public String State { get; set; }
[DataMember]
public String Zip { get; set; }
[DataMember]
public String HomePhone { get; set; }
[DataMember]
public String CellPhone { get; set; }
[DataMember]
public String Website { get; set; }
[DataMember]
public String IMAddress { get; set; }
[DataMember]
public DateTime CreatedDate { get; set; }
[DataMember]
public DateTime? UpdatedDate { get; set; }
}
Если я закомментирую вышеприведенный интерфейсный класс, ошибка компиляции во время разработки исчезнет, думая, что теперь он использует класс в моем классе YeagerTechModel, в котором определен мой объект Customer. Я думаю, что это правильное поведение, которое я хочу. Однако, когда я пытаюсь запустить свой сервис, я не могу вызвать метод Getcustomers, потому что рядом с ним стоит красный крестик.
Я чувствую, что должен указать своей веб-службе использовать мой класс клиента YeagerTechModel в качестве DataContract в интерфейсе, но не знаю, как это сделать. Вот класс Customer, который я создал в своем проекте YeagerTechModel (который является отдельным проектом, но в том же решении, что и проект YeagerTechWcfService).
Как я могу решить эту проблему, если мой метод правильно приведёт правильный объект в моем методе веб-службы GetCustomers?
[MetadataType(typeof(CustomerMetaData))]
public partial class Customer
{
}
public class CustomerMetaData
{
public object CustomerID { get; set; }
[Required]
[StringLength(50)]
[DataType(DataType.EmailAddress)]
public object Email { get; set; }
[StringLength(50)]
[DataType(DataType.Text)]
public object Company { get; set; }
[StringLength(50)]
[DataType(DataType.Text)]
public object FirstName { get; set; }
[StringLength(50)]
[DataType(DataType.Text)]
public object LastName { get; set; }
[StringLength(50)]
[DataType(DataType.Text)]
public object Address1 { get; set; }
[StringLength(50)]
[DataType(DataType.Text)]
public object Address2 { get; set; }
[StringLength(50)]
[DataType(DataType.Text)]
public object City { get; set; }
[StringLength(2)]
[DataType(DataType.Text)]
public object State { get; set; }
[StringLength(10)]
[DataType(DataType.Text)]
public object Zip { get; set; }
[StringLength(12)]
[DataType(DataType.PhoneNumber)]
public object HomePhone { get; set; }
[StringLength(12)]
[DataType(DataType.PhoneNumber)]
public object CellPhone { get; set; }
[StringLength(100)]
[DataType(DataType.Url)]
public object Website { get; set; }
[StringLength(50)]
[DataType(DataType.EmailAddress)]
public object IMAddress { get; set; }
[Required]
[DataType(DataType.Date)]
public object CreatedDate { get; set; }
[DataType(DataType.Date)]
public object UpdatedDate { get; set; }
}