Служба данных с использованием EF - возможно ли использовать метод WebGet, который возвращает пользовательский тип? - PullRequest
4 голосов
/ 14 марта 2011

В моем проекте я использую Data Service, которая использует EF.Теперь у меня есть собственный класс, который я также хочу показать через службу данных, но я не могу заставить его работать, кажется, что невозможно смешивать пользовательские типы и EF в одной службе данных.Любые предложения?

Похоже, он не находит какую-либо информацию в метаданных.

Ошибка:

Сервер обнаружилОшибка обработки запроса.Сообщение об исключении: «Невозможно загрузить метаданные для возвращаемого типа» System.Linq.IQueryable 1[ITS.NetProject.Model.CustomEnty]' of method 'System.Linq.IQueryable 1 [ITS.NetProject.Model.CustomEnty] GetCustomEnties () '.'.Смотрите журналы сервера для более подробной информации.Трассировка стека исключений: ....

Код:

   [ServiceBehavior(IncludeExceptionDetailInFaults=true)]
        public class ITSServiceOData : DataService<ITSEntities>
        {
            public static void InitializeService(DataServiceConfiguration config)
            {

                config.SetEntitySetAccessRule("*", EntitySetRights.All);

                config.SetServiceOperationAccessRule("GetCustomEnties",                
    ServiceOperationRights.AllRead);

                config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
            }


            [WebGet]
            public IQueryable<CustomEnty> GetCustomEnties()
            {
                return from e in this.CurrentDataSource.CustomEnties select e;

            }

        }

///Here it is my model definition

namespace ITS.NetProject.Model
{
    partial class ITSEntities
    {
        public IQueryable<CustomEnty> CustomEnties 
        {
            get
            {
                return ...
            }
        }
    }

//Company, Equipment, Owner are EF entity classes
    [DataServiceKey("Id")]
    public class CustomEnty
    {
        public int Id {get;set;}

        public Subject Company { get; set; }

        public Subject Equipment { get; set; }

        public Subject Owner { get; set; }
    }
}

Ответы [ 2 ]

1 голос
/ 03 мая 2011

Нет, службы данных не поддерживают этот сценарий.Вы можете добавить свой собственный тип в модель Entity Fx, но это далеко от идеала ...

0 голосов
/ 12 октября 2012

Хммм свободный райдер - Поместите класс и объект в модель и сделайте это правильно. Согласно совету выше. - или сделай отдельную простую модель. Используйте ту же строку подключения.

или за этот мерзкий взлом ...

_context.Database.ExecuteSqlCommand(cmdText, parameters);   

когда никто не смотрит на пиво в час. : -)

...