Data source client

The Data source client can be used to perform CRUD operations on data sources, also called option lists.

Get data sources

A data source can be retrieved by name:

RequestResponse
IDataSource result = await MClient.DataSources.GetAsync(<NAME>);

This returns an IDataSource object. However, we recommend that you downcast it to the correct data source type as follows:

RequestResponse
IHierarchicalDataSource hierachicalDataSource = await MClient.DataSources.GetAsync(name) as IHierarchicalDataSource;

This lets you change the value of the data source.

RequestResponse
IFlatDataSource flatDataSource = await MClient.DataSources.GetAsync(<NAME>) as IFlatDataSource;
Note

The Type property on IDataSource identifies the correct data source type at runtime.

Create data sources

To create a hierarchical data source, use the factory to create an instance and then save the instance in the data source client.

For example, you can do this for media types, so that each type of media can have multiple subvalues.

In this example, mp4 is added as a subtype of a video media type.

RequestResponse
var dataSource = MClient.DataSourceFactory.CreateHierarchicalDataSource("MediaType");
dataSource.Labels.Add(enUs, "Media type");

var video = new HierarchicalDataSourceValue("Video")
{
  Labels = { { enUs, "Video" } }
};

var mp4 = new HierarchicalDataSourceValue("MP4")
{
  Labels = { { enUs, "mp4" } }
};
video.Values.Add(mp4);

var image = new HierarchicalDataSourceValue("Image")
{
  Labels = { { enUs, "Image" } }
};

dataSource.Values.Add(video);
dataSource.Values.Add(image);

await MClient.DataSources.CreateAsync(dataSource);

Update data sources

In the following example, a flat colors data source is extended with the color red:

RequestResponse
var dataSource = await MClient.DataSources.GetAsync("Colors") as IFlatDataSource;

var red = new FlatDataSourceValue("Red")
{
  Labels = { { enUs, "Red" } }
};
dataSource.Values.Add(red);

await MClient.DataSources.UpdateAsync(dataSource);

Delete data sources

In the following example, the MediaType data source is deleted:

RequestResponse
await MClient.DataSources.DeleteAsync("MediaType");

Do you have some feedback for us?

If you have suggestions for improving this article,