В службах данных 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
определено.