Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Свойство datacontract становится доступным только для чтения на стороне клиента - WCF RIA

Автор вопроса: ak1Ответов: 1

Вот DataContract на уровне служб WCF RIA...

[Serializable()]
[DataContract]
public class MyDataSet
{
    [Include]
    [Association("ListTables", "DataSetName", "DataSetName")]
    [DataMember]
    public Collection<DataTableInfo> Tables { get; set; }

    [Key]
    [DataMember]
    public string DataXML { get; set; }

    [DataMember]
    public string DataSetName { get; set; }
}

На стороне клиента в модели представления я создаю новый экземпляр этого DataContract и пытаюсь присвоить какие-либо значения свойству Tables, получаю сообщение об ошибке, что это свойство доступно только для чтения.

Мне нужно понять причину и обходной путь этой проблемы...

Спасибо

wcfwcf-ria-services

Ответы

Ответ 1 · рейтинг 1 · Ed Chapel

Вероятно, у вас есть DomainService с таким запросом:

[EnableClientAccess]
public class MyDomainService : DomainService
{
    public IQueryable<MyDataSet> GetMyDataSets()
    {
        /* return something; */
    }
}

Если у вас нет методов для вставки и/или обновления, WCF RIA не может обновить сущность и предполагает, что вы намеревались сделать ее доступной только для чтения. Попробуйте добавить эти методы:

public void CreateMyDataSet(MyDataSet entity)
{
    // Insert
}

public void UpdateMyDataSet(MyDataSet entity)
{
    // Update
}

public void RemoveMyDataSet(MyDataSet entity)
{
    // Delete
}

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы