Entity Framework + WCF DataServices + методы расширения

Я пытаюсь создать проект библиотеки, который поможет мне в других моих проектах с некоторыми методами расширения. Тип, который будет расширен, — DbContext. Вот пример

public bool Insert<TEntity>(this DbContext Context, TEntity entity) where TEntity : class
    {
        if (Context.Entry(entity).State == EntityState.Detached) //Entity is detached
        {
            Context.Set<TEntity>().Add(entity);
        }
        else //Entity is attached
        {
            Context.Entry(entity).State = EntityState.Added;
        }

        var str = Context.GetValidationErrors();

        if (Context.GetValidationErrors().Any()) return false;

        Context.SaveChanges();
        return true;

    }

В чем проблема ?

Я раскрываю контекст через WCF Data Services, и это сужает мои возможности контекста, что для меня противоречиво, поскольку цель здесь — предоставить данные, как вы можете предоставлять данные без значений для их достижения? Итак, как я могу выполнить эту задачу, предоставив свои методы расширения в качестве методов расширения для моих операций контекста на стороне клиента.

РЕДАКТИРОВАТЬ

Я читал вокруг и нашел этот ответ от Ладислава Мрнки

Реализация службы данных WCF с использованием шаблона репозитория


person Diego Garcia Vieira    schedule 02.12.2013    source источник
comment
Вы имеете в виду, что когда вы пытаетесь вставить объект через службу данных WCF, этот метод расширения не вызывается?   -  person CodeCaster    schedule 02.12.2013
comment
Точно... Другие методы тоже не отображаются   -  person Diego Garcia Vieira    schedule 02.12.2013


Ответы (1)


DbContext API отличается от API сгенерированного контекста, когда вы добавляете ссылку на сервис данных. Более того, возможности генерируемого контекста ограничены по сравнению с DbContext. Контекст на стороне клиента является вспомогательным средством для построения запросов OData, и он не идеален. Я не думаю, что вы могли бы портировать каждый метод расширения без повторной реализации (если это вообще будет возможно).

person Dennis    schedule 02.12.2013
comment
Я понимаю, но это противоречиво, так как основная цель — предоставить данные с сервера на сторону клиента. - person Diego Garcia Vieira; 02.12.2013
comment
Можете ли вы представить себе обходной путь? У меня есть отличные методы для использования с контекстом, которые мне придется делать со службой WCF, а не со службами данных WCF. Но одна из причин, по которой я выбираю службы данных, а не службу wcf, — это простой способ работы с графиками отключенных объектов. - person Diego Garcia Vieira; 02.12.2013
comment
@DiegoGarciaVieira: это действительно зависит от того, какие функции вы хотите иметь на стороне клиента. Контекст DS очень похож на DBContext, но есть разница. Будет лучше, если вы разместите вопрос для каждого конкретного случая, потому что теперь вы задаете очень общий вопрос. - person Dennis; 02.12.2013
comment
Да, я понимаю. Я обновил свой вопрос ответом Ладислава Мрнки, и то, что он сказал о разработке, увлекло меня с собой ... Я отмечу ваш ответ как правильный, поскольку вы дали общий контекст. - person Diego Garcia Vieira; 03.12.2013