Как вернуть сложные типы из службы данных WCF? - PullRequest
1 голос
/ 12 апреля 2011

Можно ли вернуть сложный тип из службы данных WCF, которая состоит из коллекций типов сущностей?

, например:

 //the complex type to return
 class Entities
 {
    ICollection<Contract> Contracts;
    ...

 }

 //configuration
 public partial class MyContext: DbContext
 {
    public MyContext()
        : base("name=DBEntities")
    {
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.ComplexType<Entities>();
        modelBuilder.Entity<Contract>().HasKey(c=>c.Id);
        ...
    }
    ...
  }

 //the WCF Data Service
 public class PricingDataService : DataService<ObjectContext>, IDisposable
 {
     [WebGet]
     public Entities GetEntities()
     {
         return new Entities();
     }
  }

Когда я пробую вышеуказанную конфигурацию,Я получаю исключение:

" The exception message is 'One or more validation errors 
were detected during model     generation: System.Data.Edm.EdmEntityType: Name: 
Each type name in a schema must be unique. Type name 'Contract' was already 
defined."

Ответы [ 3 ]

0 голосов
/ 13 апреля 2011

По какой-то причине опубликованный вами фрагмент мне трудно читать.Тем не менее, я могу сказать вам, что я отправил через типы WCF, как те.Я обычно не использую ICollection <> для объявления своих списков, вместо этого я обычно использую List <>, и у меня никогда не было особых проблем с получением информации о клиенте.

Возможно, это проблема того, как выВы определяете класс по вашему контракту данных.

0 голосов
/ 15 апреля 2011

Я не думаю, что возвращение сложных типов, содержащих коллекции, является проблемой. Пожалуйста, обратитесь к этот пост .

Здесь я мог бы добавить метод для возврата IQueryable, и он работает абсолютно нормально. Обратите внимание, что отдел содержит еще одну коллекцию. Надеюсь, это поможет.

0 голосов
/ 12 апреля 2011

Нет, это невозможно, потому что если вы определите это, это означает, что у сложного типа есть свойство навигации к контрактам.Это не разрешено в рамках всей сущности.Вероятно, ошибка возникает из-за того, что Contract уже определен как сущность, но завершенный тип пытается отобразить его как что-то еще, но это только предположение.

...