Работа с Entity framework с Sitefinity и Portal Connector и Dynamic CRM

Я работаю над проектом, который содержит Dynamics CRM и Portal Connector, основанный на Sitefinity.

Существует способ извлечения данных внутри Portal Connector из динамической CRM, который называется Сохраненный запрос и таким образом сгенерировать URL-адрес для получения данных с помощью HTTP-запроса во внешнем интерфейсе, но я не хочу получать к нему доступ Я хочу получить доступ к Dynamics CRM by Backened, в частности, через Entity framework, можно ли подключиться к Dynamic CRM by Entity framework и получить данные с помощью C #, а затем отправить их в View?


person 3202User    schedule 21.01.2021    source источник


Ответы (2)


Приношу свои извинения за то, что не наткнулся на ваш пост раньше.

Лучше использовать соединение CRM, предоставляемое Portal Connector. По сути, он является оболочкой для CRM SDK, поэтому здесь могут выполняться вызовы, которые вы хотите сделать в SDK, и он использует соединение CRM, настроенное на сайте.

https://www.crmportalconnector.com/developer-network/documentation/developing-for-tpc/Dynamics-CRM-Connection-API.

// Required usings
using System;
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Query;
using pavliks.PortalConnector.Crm.Connection; 

// The Code
// Create an instance of the connection manager
CrmConnectionManager manager = new CrmConnectionManager();

// Use the Connection property of the manager to access the 
// configured CRM connection and create a new account
Guid newId = manager.Connection.Create(new Entity("account")
{
    Attributes = new AttributeCollection()
    {
        {"name", "My Account Name"}
    }
});

// Create Query Expression
QueryExpression query = new QueryExpression("account")
{
    ColumnSet = new ColumnSet(true),
           
};

// Use manager to query CRM
EntityCollection entities = manager.Connection.RetrieveMultiple(query);

Все необходимые сборки уже находятся в папке bin сайта Sitefinity, поскольку они поставляются со сборками Portal Connector и копируются в это место с Portal Connector во время установки. Если ваш код находится в другом проекте, либо укажите сборки в проекте Sitefinity, либо добавьте их из пакета развертывания Portal Connector в свой проект.

Я знаю, что это немного поздно, но я надеюсь, что это поможет вам в вашем следующем проекте портала.

person Adam Benoit    schedule 23.04.2021

позвольте мне ответить на мой вопрос, на случай, если кто-то захочет сделать то же самое в будущем:

1. Первое, что нужно сделать для подключения к Dynamic CRM, не связано с Portal Connector, поэтому область, в которой вы должны искать, - это Dynamic CRM.

2- Чтобы подключиться к Dynamic CRM, выполните следующие действия:
2.1 - установите этот пакет Microsoft.CrmSdk.XrmTooling.CoreAssembly
2.2 - найдите строку подключения.
2.3 используйте ниже код


var service=new CrmServiceClient("AuthType=Office365;Url=https://ititisdf.crm4.dynamics.com;Password=1234" )/*put your connection string instead*/

3- Некоторые примеры из вас могут создавать или извлекать данные

service.Create(new Entity("account"){["name]="Test connection"}); // add record

// retrive data

//1- query expression
//var query= new QueryExpression().Criteria. <===== from here you can add filteration ... and so on

//2- fetch xml expression
//var query=new FetchExpression(@"fetch xml value"); // you need to use XrmToolBox to generate your fetchXml

//3- var query=new  QueryByAttribute("account");
// query.AddAttributeValue("name","Test1");


var entities=service.RetrieveMultiple(query).Entities;



foreach(var entity in entities)
{
entity["name"];
}

var organization=new OrganizationServiceContext(service);

// below code is under a concept called late-bound

var result=(from account in organization.CreateQuery("account")
join contact in organization.CreateQuery("contact") 
on account["primarcontactid"] equals contact["contactid"]
where account["gendercode"] == "test" AND account["industrycode"]=1
select new {

Name=account["name"],
ContactName=contact["fullname"]
}).ToList();

// для реализации ранней границы

1- перейдите в XrmToolBox == ›О программе ==› Магазин плагинов == ›Генератор ранней привязки ==› Откроется страница генератора ранней привязки, выберите Сущность, которую нужно пропустить, и выберите, какую сущность нужно включить, а какую исключить === › выберите путь к сгенерированному классу .cs, который будет представлять вашу сущность в вашем проекте === ›нажмите Create Entities ===› теперь скопируйте сгенерированный файл.

Теперь у вас есть что-то вроде Entity framework:

Просто используйте имя сущности как обычный класс:

var account = new Account{Name="Ahmed"};

и вместо этого:

organization.CreateQuery("account") 

использовать

organization.CreateQuery<yourEntityName>()

На самом деле, я получил всю эту информацию с YouTube, серьезно относящуюся к Dynamic, и вот ссылка

примечание: это серьезно на арабском языке, по этой причине я кратко изложил шаги в этом ответе, чтобы сделать его полезным для всех.

person 3202User    schedule 28.01.2021