wkololo_4ever
@wkololo_4ever

WCF + EF + ASP.NET MVC. Как передавать связанные данные?

Совсем недавно начал разбираться в WCF.

Есть две модели
[DataContract]
    public class Telephone
    {
        [DataMember]
        public int TelephoneId { get; set; }
        [DataMember]
        public int Number { get; set; }
        [DataMember]
        public int ContactId { get; set; }
        [DataMember]
        public Contact Contact { get; set; }
    }

[DataContract]
    public class Contact
    {
        [DataMember]
        public int ContactId { get; set; }
        [DataMember]
        public string Name { get; set; }
        [DataMember]
        public string Address { get; set; }
        [DataMember]
        public ICollection<Telephone> Telephone { get; set; }
    }

Использую их для EF и WCF.
public class ContactsContext:DbContext
    {
        public DbSet<Contact> Contacts { get; set; }
        public DbSet<Telephone> Telephones { get; set; }
    }

Реализация сервиса
public class ServiceContacts : IServiceContacts
    {
        ContactsContext contactContext;
        public IQueryable<Contact> GetAllContact()
        {
            contactContext = new ContactsContext();

            var contacts = contactContext.Contacts.Where(m => m.ContactId > -1);
            
            return contacts;
        }
   }

Пытаюсь вызвать этот метод в контроллере
public ActionResult Index()
        {
            var service = new ServiceReference1.ServiceContactsClient();
            var contacts=service.GetAllContact();
            return View(contacts);
        }

И каким-то неведомым для меня образом GetAllContact() возвращает ServiceReference1.Contact[], а не IQueryable. С чем это связано и как мне вывести данные из зависимой таблицы (Telephones)?
  • Вопрос задан
  • 3120 просмотров
Решения вопроса 1
wkololo_4ever
@wkololo_4ever Автор вопроса
Ответ найден, оказывается можно передавать только стандартные типы.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы