首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Sitefinity和Portal连接器和动态CRM的实体框架

使用Sitefinity和Portal连接器和动态CRM的实体框架
EN

Stack Overflow用户
提问于 2021-01-21 14:40:36
回答 2查看 298关注 0票数 0

我正在从事一个包含Dynamics和Portal的项目,它建立在Sitefinity的基础上。

有一种方法可以从动态客户关系管理( 保存查询 )中检索门户连接器内部的数据,这种方法可以为您生成一个URL,以便您在前端通过HTTP请求检索数据,但我不想通过前端访问它--我想通过后端访问Dynamics,特别是按实体框架访问Dynamics,是否可以通过实体框架连接到动态客户关系管理并通过C#检索数据,然后将其发送到View?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-01-28 10:47:08

让我回答我的问题,万一将来有人想做类似的事情:

首先,连接到动态CRM与Portal连接器无关,所以您应该搜索的区域是动态CRM。

2-要连接到动态CRM,您应该遵循以下步骤:

2.1-安装此软件包"Microsoft.CrmSdk.XrmTooling.CoreAssembly“

2.2-找出连接字符串是什么。

2.3使用以下代码

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

3-一些您可以创建或检索数据的示例

代码语言:javascript
复制
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 ==> on ==>插件商店,==>早期绑定的Generator==>Early绑定生成器页面将打开,选择实体,跳过并选择要包含的实体和想要排除===>的实体,选择生成的.cs类的路径,该路径将代表您的项目中的实体,请按Create ===>,现在复制生成的文件。

现在您有了类似于实体框架的内容:

只需将实体名称用作普通类:

代码语言:javascript
复制
var account = new Account{Name="Ahmed"};

而不是这样:

代码语言:javascript
复制
organization.CreateQuery("account") 

使用

代码语言:javascript
复制
organization.CreateQuery<yourEntityName>()

实际上,我从youtube获得了所有与Dynamic相关的信息,下面是链接

注:由于这个原因,我总结了这个答案中的步骤,使它对所有的人都有帮助。

票数 -1
EN

Stack Overflow用户

发布于 2021-04-23 23:51:46

我很抱歉没能早点到达你的岗位。

更好的方法是使用Portal提供的CRM连接。它本质上封装了CRM,因此可以在这里调用SDK,并使用站点中配置的CRM连接。

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

代码语言:javascript
复制
// 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);

所有必需的程序集都已在Sitefinity文件夹中,因为它们是随Portal程序集一起附带的,并在安装过程中与Portal一起复制到该位置。如果您的代码位于另一个项目中,请参考Sitefinity项目中的程序集,或者将它们从添加到项目中。

我知道现在有点晚了,但我希望它能对您的下一个门户项目有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65829773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档