Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Gösterir
Bu örnekte Dropbox dosya paylaşım hizmeti için dropboxRetrieveMultiplePlugin adlı genel bir Microsoft Dataverse sanal tablo veri sağlayıcısı eklentisi için en düşük uygulama gösterilmektedir. "Doğrudan donanım üzerinde" yaklaşımını kullanır ve QueryExpression öğesini DropBoxExpressionVisitor özel ziyaretçi sınıfı oluşturma işlemi aracılığıyla çevirir. Arama ölçütlerini karşılayan dosyaların bir koleksiyonunu olarak EntityCollectiondöndürür.
Uyarı
Bu örnek, derlemeyi Dataverse'e kaydetmeden önce eklenti ve Dropbox derlemelerini birleştirmek için ILMERGE kullanımını gerektirir. ILMERGE kullanımı resmi olarak desteklenmez. Bu örnekte gelecekteki bir güncelleştirme, ILMERGE kullanma gereksinimini ortadan kaldıracaktır.
Başlangıç Yapmak
Bu örneği oluşturmak için önce çözümünüzde Dropbox.Api ve Microsoft.CrmSdk.Data NuGet paketlerini yüklemeniz gerekir. DropboxClient nesnesini oluştururken bir Dropbox hesabına sahip olmanız ve gerçek bir erişim belirteci sağlamanız gereklidir.
Aşağıdaki using deyimlerini kodunuza ekleyin:
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Query;
using Dropbox.Api;
using Dropbox.Api.Files;
Örnek kodu
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;
}
}
Ayrıca bakınız
Sanal tabloları kullanmaya başlama
Sanal tablolarla ilgili API ile ilgili dikkat edilmesi gerekenler
Özel sanal tablo veri sağlayıcıları