Параметр должен быть типом сущности, предоставляемым DomainService? - PullRequest
1 голос
/ 18 октября 2011

Попытка реализовать службу домена в приложении SL и получение следующей ошибки:

Параметр spFolderCreate метода домена «CreateSharePointFolder» должен быть типом сущности, предоставляемым DomainService.

 [EnableClientAccess()]
public class FileUploadService : DomainService
{
    public void CreateSharePointFolder(SharePointFolderCreate spFolderCreate)
    {
        SharePointFolder spf = new SharePointFolder();
            spf.CreateFolder_ClientOM(spFolderCreate.listName, spFolderCreate.fileName);
    }

 [OperationContract]
    void CreateSharePointFolder(SharePointFolderCreate spFolderCreate);

[DataContract]
public class SharePointFolderCreate
{
    private string m_listName;
    private string m_fileName;

    [DataMember]
    public string listName
    {
        get { return m_listName; }
        set { m_listName = value; }
    }

    [DataMember]
    public string fileName
    {
        get { return m_fileName; }
        set { m_fileName = value; }
    }
}

Так я что-то упустил здесь, чтобы все это работало?

1 Ответ

7 голосов
/ 24 октября 2011

Может случиться так, что инфраструктура выведет намеченную операцию, потому что у вас есть слово «Создать» с префиксом имени функции (CreateSharePointFolder).Подробности этого поведения можно найти здесь

Хотя это нормально для DomainServices и EntityFramework, следуя информации в этой статье, можно сделать вывод, что будут выполняться методы, начинающиеся с «Удалить».удаление объекта, поэтому необходимо принять объект в качестве параметра.То же самое верно для методов с префиксом «Создать» или «Вставить».Только методы «Get» или «Select» могут принимать не-сущностные параметры, что позволяет передавать числовой идентификатор (например) методу «Get».

Попробуйте временно изменить имя метода на «BlahSharePointFolder»«чтобы проверить, не является ли это условием логического вывода причиной вашей проблемы.

Кроме того, поскольку для вашего SharePointFolderCreate DC не определены метаданные, вам может потребоваться декорировать класс (в дополнение к атрибуту [DataContract]).) с атрибутом [MetadataType].Вы увидите, как это реализовать, если использовали мастер DomainServiceClass и указали на модель EF.Внизу есть флажок для генерации метаданных.Где-нибудь в вашем решении .Web проекте вы должны найти файл domainservice .metadata.cs.В этом файле вы найдете примеры того, как использовать атрибут [MetadataType].

Чтобы служба RIA WCF корректно работала с вашими собственными методами, необходимо убедиться, что все сущности, существующие в списке параметров, имеютпо крайней мере один член с атрибутом [Key], определенным в их классе метаданных, и что объект возвращается где-то на вашем DomainService в методе «Get».

HTH

Lee

...