Σημείωμα
Η πρόσβαση σε αυτήν τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να εισέλθετε ή να αλλάξετε καταλόγους.
Η πρόσβαση σε αυτήν τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να αλλάξετε καταλόγους.
Αποδεικνύει
Αυτό το δείγμα εμφανίζει μια ελάχιστη υλοποίηση για μια γενική προσθήκη υπηρεσίας παροχής δεδομένων εικονικού πίνακα Του Microsoft Dataverse, το DropboxRetrieveMultiplePlugin, για την υπηρεσία κοινής χρήσης αρχείων Dropbox . Χρησιμοποιεί την προσέγγιση "bare metal", μεταφράζοντας το QueryExpression μέσω της δημιουργίας της προσαρμοσμένης κλάσης επισκέπτη, DropBoxExpressionVisitor. Επιστρέφει μια συλλογή των αρχείων που ικανοποιούν τα κριτήρια αναζήτησης ως .EntityCollection
Σημείωμα
Αυτό το δείγμα απαιτεί τη χρήση του ILMERGE για τον συνδυασμό των συγκροτήσεων προσθηκών και Dropbox πριν από την καταχώρηση της συγκρότησης με το Dataverse. Η χρήση του ILMERGE δεν υποστηρίζεται επισήμως. Μια μελλοντική ενημέρωση αυτού του δείγματος θα καταργήσει την ανάγκη χρήσης του ILMERGE.
Πώς να ξεκινήσετε
Για να δημιουργήσετε αυτό το δείγμα, πρέπει πρώτα να εγκαταστήσετε τα πακέτα Dropbox.Api και Microsoft.CrmSdk.Data NuGet στη λύση σας. Θα χρειαστείτε επίσης έναν λογαριασμό DropBox και ένα πραγματικό διακριτικό πρόσβασης κατά τη δημιουργία μιας παρουσίας του DropboxClient.
Προσθέστε τα παρακάτω χρησιμοποιώντας προτάσεις στον κείμενό σας:
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Query;
using Dropbox.Api;
using Dropbox.Api.Files;
Δείγμα κώδικα
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;
}
}
Δείτε επίσης
Γρήγορα αποτελέσματα με εικονικούς πίνακες
Ζητήματα API εικονικών πινάκων
Προσαρμοσμένες υπηρεσίες παροχής δεδομένων εικονικού πίνακα