В службах данных WCF как использовать SetServiceOperationAccessRule с удаленными сборками

Давайте представим, что моя сущность EF4 - MyClass, а имя набора - MyClasses.

Они оба находятся в пространстве имен MyNamespace, поэтому: MyNamespace.MyClass

Итак, у меня есть такая строка:

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

Но тогда я получаю эту ошибку:

The given name 'MyClasses' was not found in the service operations. 
Parameter name: name

Итак, я попробовал это:

config.SetServiceOperationAccessRule("MyNamespace.MyClass", 
    ServiceOperationRights.AllRead);

и это:

config.SetServiceOperationAccessRule("MyNamespace.MyClasses", 
    ServiceOperationRights.AllRead);

Но та же ошибка...

Мои дела и контекст данных находятся в отдельной сборке. Это имеет значение?

Как правильно указать набор?

3 ответа

Решение

Не должно иметь значения, что они находятся в другой сборке. Важна разница между наборами сущностей и операциями обслуживания. Если у вас есть набор сущностей (в случае EF это обычно имя таблицы), которое отображается как свойство в контексте), называемое MyClasses, тогда вам нужно использовать метод config.SetEntitySetAccessRule. Если у вас есть операция службы (это будет метод в классе, производном от DataService), вам необходимо использовать config.SetServiceOperationAccessRule.

Иногда модель сущностей генерирует сущности с помощью (-ями), например, таблица товаров создается с именем "PRODUCTs" или PRODUCT без "s"

Пытаться:

config.SetServiceOperationAccessRule("MyNamespace.MyClass, MyAssemblyName", 
    ServiceOperationRights.AllRead);

где MyAssemblyName это имя сборки, где MyClass определено.

Другие вопросы по тегам