InitializeService больше не вызывается, не могу понять, почему - PullRequest
0 голосов
/ 03 ноября 2011

У меня есть служба wcf odata, и похоже, что InitializeService не вызывается ...

Код выглядит следующим образом:

[ServiceBehavior(IncludeExceptionDetailInFaults = true)]
public class MyDataService : DataService<MyContext>
{
    // This method is called only once to initialize service-wide policies.
    public static void InitializeService(DataServiceConfiguration config)
    {
        // TODO: set rules to indicate which entity sets and service operations are visible, updatable, etc.
        // Examples:
        config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);
        config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
        config.UseVerboseErrors = true;
    }

    // see http://romiller.com/2010/07/19/ef-ctp4-tips-tricks-wcf-data-service-on-dbcontext/
    protected override AzureAppContext CreateDataSource()
    {
        var ctx = base.CreateDataSource();

        // Disable proxy object creation.
        ctx.Configuration.ProxyCreationEnabled = false;
        return ctx;
    }
}

При этом я получаю исключениесообщается как:

Сервер обнаружил ошибку при обработке запроса.Сообщение об исключении: «В типе контекста данных« MyContext »имеется верхнее свойство IQueryable« MyEntities », тип элемента которого не является типом объекта.Убедитесь, что свойство IQueryable имеет тип сущности, или укажите атрибут IgnoreProperties в типе контекста данных, чтобы игнорировать это свойство. '.Для получения дополнительной информации см. Журналы сервера

В этом случае MyEntities - это DBSet кода EntityFramework First.

Если я помещаю [IgnoreProperties("MyEntities")] в контекст, то ошибка выдается наВместо этого устанавливается второе свойство.

Ключ Я думаю: если я добавлю точку останова в метод InitializeService, то не похоже, что он вызывается.

На самом деле не уверен, что происходит сейчас...

1 Ответ

0 голосов
/ 19 ноября 2011

Шон помог определить правильный ответ в комментариях выше.

По сути, произошло то, что когда я импортировал проект, то stylecop изменил имена моих ключей из EntityID в EntityId.

В пределахна уровне SQL EF все было в порядке - потому что для ключей были настроены сопоставления.Однако в службе oData он искал имена, оканчивающиеся на «ID» (чувствительны к регистру), и когда он не нашел их, он без объяснения причин остался без возможности отладки!

...