1

我在构建我的 asp.net 项目时收到一条警告,指出不推荐使用 V1APIConnector 并要求我使用 VersionOneAPIConnector。

使用新的 VersionOneAPIConnector 我必须执行以下操作才能获取子项目:

  1. 为我们需要的数据构建一个字符串(例如:https ://abc.org/V1/rest-1.v1/Data/Scope?where=Scope.Name='FOO'&sel=Children.Name)然后传递它到 GetData 方法。
  2. 读取返回的流,然后创建一个 xml。
  3. 读取 xml 以提取所需的数据。

使用 V1APIconnector 检索数据要简单得多。

  1. 创建 IMetaModel 和服务实例
  2. 查询相应的资产类型(GetAssetType 方法)和属性(getAttributedefinition)

使用 VersionOneAPIConnector 上述方法是否仍然有效?
如果是,我们是否有任何关于如何获取项目子项目的示例?

谢谢

4

1 回答 1

1

您收到的编译警告是因为 VersionOne.SDK.APIClient 当前正在内部使用 V1APIconnector,并且仅显示此警告是因为,我猜您将 VersionOne.SDK.APIClient 包含在您的项目中,这种方法有时不是建议,因为您可能会错过更新。最好的办法应该是使用 nuget。在 VS 中添加对 myget.org ( https://www.myget.org/F/versionone/ ) 上的 V1 库的引用(工具 -> 选项 -> 包管理器 -> 包源),这样您将拥有您的 DLL 已更新。

关于您的问题:您无需直接使用 VersionOneAPIConnector,但这里有两个列出子项目的示例:一个使用您提到的 Metamodel,另一个使用 VersionOneAPIConnector。

//示例1:使用MetaModel列出'Foo'的所有子项目

var assetType = _context.MetaModel.GetAssetType("Scope");
var query = new Query(assetType);
//Filter Attribute
var parentNameAttribute = assetType.GetAttributeDefinition("Parent.Name");
//Filter
var filter = new FilterTerm(parentNameAttribute);
filter.Equal("Foo");
query.Filter = filter; 
var result = _context.Services.Retrieve(query);

示例 2:使用 VersionOneAPIConnector 和 V1 用户和密码列出 'Foo' 的所有子项目。

Stream streamResult = new VersionOneAPIConnector("https://abc.org/v1sdktesting/rest-1.v1/Data/Scope?where=Parent.Name=%27Foo%27").WithVersionOneUsernameAndPassword("usr","pwd").GetData();
于 2014-05-16T21:43:58.893 回答