Märkus.
Juurdepääs sellele lehele nõuab autoriseerimist. Võite proovida sisse logida või kausta vahetada.
Juurdepääs sellele lehele nõuab autoriseerimist. Võite proovida kausta vahetada.
Näitab
See näidis näitab Dropboxi failide ühiskasutusteenuse üldise Microsoft Dataverse'i virtuaalse tabeli andmepakkuja lisandmooduli DropboxRetrieveMultiplePlugin minimaalset juurutamist. See kasutab "paljasmetalli" lähenemist, tõlkides QueryExpression kohandatud külastajaklassi DropBoxExpressionVisitor loomise kaudu. See tagastab otsingukriteeriumidele EntityCollectionvastavate failide kogumi .
Märkus.
See näidis nõuab lisandmooduli ja Dropboxi koostude ühendamiseks ILMERGE'i kasutamist enne koostu registreerimist Dataverse'is. ILMERGE'i kasutamine ei ole ametlikult toetatud. Selle näidise tulevane värskendus eemaldab vajaduse kasutada ILMERGE'i.
Alustamine
Selle näidise koostamiseks peate esmalt installima oma lahendusse NuGeti paketid Dropbox.API ja Microsoft.CrmSdk.Data . DropboxClienti eksemplari loomisel vajate ka DropBoxi kontot ja edastage tegelik juurdepääsuluba.
Lisage oma koodile järgmised using laused.
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Query;
using Dropbox.Api;
using Dropbox.Api.Files;
Näidiskood
public class DropBoxExpressionVisitor : QueryExpressionVisitorBase
{
public string SearchKeyWords { get; private set; }
public override QueryExpression Visit(QueryExpression query)
{
// Very simple visitor that extracts search keywords
var filter = query.Criteria;
if (filter.Conditions.Count > 0)
{
foreach (ConditionExpression condition in filter.Conditions)
{
if (condition.Operator == ConditionOperator.Like && condition.Values.Count > 0)
{
string exprVal = (string)condition.Values[0];
if (exprVal.Length > 2)
{
this.SearchKeyWords += " " + exprVal.Substring(1, exprVal.Length - 2);
}
}
}
return query;
}
}
}
public class DropboxRetrieveMultiplePlugin : IPlugin
{
public void Execute(IServiceProvider serviceProvider)
{
var context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
var qe = (QueryExpression)context.InputParameters["Query"];
if (qe != null)
{
var visitor = new DropBoxExpressionVisitor();
qe.Accept(visitor);
using (var dbx = new DropboxClient(AccessToken))
{
if (visitor.SearchKeyWords != string.Empty)
{
var searchCriteria = new SearchArg(string.Empty, visitor.SearchKeyWords);
var task = Task.Run(() => this.SearchFile(dbx, searchCriteria));
context.OutputParameters["BusinessEntityCollection"] = task.Result;
}
}
}
}
public async Task<EntityCollection> SearchFile(DropboxClient dbx, SearchArg arg)
{
EntityCollection ec = new EntityCollection();
var list = await dbx.Files.SearchAsync(arg);
foreach (var item in list.Matches)
{
if (item.Metadata.IsFile)
{
Entity e = new Entity("new_dropbox");
e.Attributes.Add("new_dropboxid", Guid.NewGuid());
e.Attributes.Add("new_filename", item.Metadata.AsFile.Name);
e.Attributes.Add("new_filesize", item.Metadata.AsFile.Size);
e.Attributes.Add("new_modifiedon", item.Metadata.AsFile.ServerModified);
ec.Entities.Add(e);
}
}
return ec;
}
}
Vt ka
Virtuaalsete laudadega alustamine
Virtuaalsete tabelite API kaalutlused
Kohandatud virtuaalse tabeli andmepakkujad