无法为只读属性分配新值

时间:2014-02-17 16:34:53

标签: c# versionone

我正在使用SDK,它可以查询一组数据,并使用名为VersionOne的宁静Web服务更新数据。我们使用Web服务来记录QA测试。每个测试都有“名称”,“状态”等属性。除“状态”外,大多数属性都已成功更新。

这是我调用的方法,当我单步执行代码时,我可以获取旧值,但不能按预期更改属性值。表示“无法将新值分配给只读属性”的错误。

public bool TestInProgress()
    {
        var testId = Oid.FromToken("Test:26017", _context.MetaModel);
        var query = new Query(testId);
        var assetType = _context.MetaModel.GetAssetType("Test");
        var testStatus = assetType.GetAttributeDefinition("Status.Name");

        query.Selection.Add(testStatus);
        var result = _context.Services.Retrieve(query);
        var test = result.Assets[0];
        var oldResult = GetValue(test.GetAttribute(testStatus).Value);
        test.SetAttributeValue(testStatus, "Failed");
        _context.Services.Save(test);

        LogResult(test.Oid.Token, oldResult, GetValue(test.GetAttribute(testStatus).Value));
        Console.WriteLine(test.Oid.Token, oldResult, GetValue(test.GetAttribute(testStatus).Value));

        return true;

    }

https://github.com/versionone/VersionOne.SDK.Net.APIClient#attribute-definition

根据VersionOne SDK文档,它看起来好像是“只读”并且是一个属性。我看了几个不同的测试和测试集的不同属性,但没有看到它。我已经过正确的身份验证,并已成功更新了许多不同测试的其他属性。但是,当我尝试以编程方式更改“状态”属性时,它表示它是只读的。

https://github.com/versionone/VersionOne.SDK.Net.APIClient#learn-by-example-apiclient-setup

如何以编程方式更改当前为只读的VersionOne中的资源属性,以便您可以使用restful Web服务更新属性?

1 个答案:

答案 0 :(得分:1)

由于属性是只读的,因此您将无法更改其值。相反,请考虑创建“新”资产,设置其属性,然后保存它。

查看下面的示例并尝试在项目中使用该想法:

var TestId = Oid.FromToken("Test:26017", _context.MetaModel);
var TestAsset = _context.MetaModel.GetAssetType("Test");
var newTestAsset = _context.Services.New(TestAsset, TestId);

var TestStatusAttr = newTestAsset.GetAttributeDefinition("Status.Name");
newTestAsset.SetAttributeValue(TestStatusAttr, "Failed");
_context.Services.Save(newTestAsset);