MS Dynamics 365 CRM 在线 - 转储实体
MS Dynamics 365 CRM online - dump entity
我是Dynamics 365的新手,我们使用的是Dynamics 365 CRM在线版。
我需要将几个实体转储到我们的本地 SQL 服务器。
我找到了很多示例,但不是整个实体(包括查找列)。
在这个(最相关的)示例中,什么对我不起作用:
我需要所有列的列表(我真的需要在 new Contact{} 中指定完整的列列表吗?)
在结果中获取查找值而不是 ID (guid)
`var orgContext = new OrganizationServiceContext(service);
// Retrieve the Contact records that we created previously.
List<Contact> contacts = (from c in orgContext.CreateQuery<Contact>()
where c.Address1_City == "New York"
select new Contact
{
ContactId = c.ContactId,
FirstName = c.FirstName,
LastName = c.LastName
}).ToList<Contact>();
Console.Write("Contacts retrieved, ");'
您可以使用 Excel 从 Dynamics 365 (CRM) 导出功能
轻松做到这一点
只需将所有列添加到高级查找视图即可。
高级查找按钮
实体选择器(寻找)
编辑列
将所有列添加到视图(有关更多说明,请参见下面的单独图片)。
查看结果
如果您的记录超过 100000 条,您可能会达到限制。
“我们即将在 Excel 文件中生成您的 Dynamics 365 数据(超过 5000 条记录)。如果超过 100000 条记录,则只会导出前 100000 条。”
除了购买突破 100000 条限制外,您还可以使用 Export to Excel Tool from XRM Toolbox 无需任何编码即可帮助您获取所有记录。
虽然您正在做的是好的做法,即定义了 select
列表中提到的属性列表,但您可以使用以下语法 select 所有属性。值得一提的是,这将对性能产生巨大影响。
List<Contact> contacts = (from c in orgContext.CreateQuery<Contact>()
where c.Address1_City == "New York"
select c).ToList<Contact>();
进入您的下一个问题 - 获取查找字段,为此您可以使用 join
。对于前。使用以下语法从帐户中获取主要联系人查找。这使用实体之间的主键和外键来连接。
var accountQuery = from account in context.CreateQuery("account")
join contact in context.CreateQuery("contact")
on account["primarycontactid"] equals contact["contactid"]
where account["name"] == "Some Company Name"
select new {
Name = account["name"],
Email = account["emailaddress1"],
Manager = contact
};
foreach (var account in accountQuery)
{
Console.WriteLine(account.Name + " is run by: " + account.Manager["fullname"]);
}
使用 LINQ 查询是一种方式,还有其他方式,如 web api、fetchxml 和查询表达式来完成同样的工作。您仍然必须捕获转储作业的最后 运行 时间,并使用大于最后 运行 时间戳的 createdon 和 modifiedon 时间戳过滤增量数据。
不用说,Activity是最繁琐的实体,涉及多个表,如Activity指针,Activity方等
我是Dynamics 365的新手,我们使用的是Dynamics 365 CRM在线版。 我需要将几个实体转储到我们的本地 SQL 服务器。
我找到了很多示例,但不是整个实体(包括查找列)。
在这个(最相关的)示例中,什么对我不起作用:
我需要所有列的列表(我真的需要在 new Contact{} 中指定完整的列列表吗?)
在结果中获取查找值而不是 ID (guid)
`var orgContext = new OrganizationServiceContext(service); // Retrieve the Contact records that we created previously. List<Contact> contacts = (from c in orgContext.CreateQuery<Contact>() where c.Address1_City == "New York" select new Contact { ContactId = c.ContactId, FirstName = c.FirstName, LastName = c.LastName }).ToList<Contact>(); Console.Write("Contacts retrieved, ");'
您可以使用 Excel 从 Dynamics 365 (CRM) 导出功能
轻松做到这一点只需将所有列添加到高级查找视图即可。
高级查找按钮
实体选择器(寻找)
编辑列
将所有列添加到视图(有关更多说明,请参见下面的单独图片)。
查看结果
如果您的记录超过 100000 条,您可能会达到限制。
“我们即将在 Excel 文件中生成您的 Dynamics 365 数据(超过 5000 条记录)。如果超过 100000 条记录,则只会导出前 100000 条。”
除了购买突破 100000 条限制外,您还可以使用 Export to Excel Tool from XRM Toolbox 无需任何编码即可帮助您获取所有记录。
虽然您正在做的是好的做法,即定义了 select
列表中提到的属性列表,但您可以使用以下语法 select 所有属性。值得一提的是,这将对性能产生巨大影响。
List<Contact> contacts = (from c in orgContext.CreateQuery<Contact>()
where c.Address1_City == "New York"
select c).ToList<Contact>();
进入您的下一个问题 - 获取查找字段,为此您可以使用 join
。对于前。使用以下语法从帐户中获取主要联系人查找。这使用实体之间的主键和外键来连接。
var accountQuery = from account in context.CreateQuery("account")
join contact in context.CreateQuery("contact")
on account["primarycontactid"] equals contact["contactid"]
where account["name"] == "Some Company Name"
select new {
Name = account["name"],
Email = account["emailaddress1"],
Manager = contact
};
foreach (var account in accountQuery)
{
Console.WriteLine(account.Name + " is run by: " + account.Manager["fullname"]);
}
使用 LINQ 查询是一种方式,还有其他方式,如 web api、fetchxml 和查询表达式来完成同样的工作。您仍然必须捕获转储作业的最后 运行 时间,并使用大于最后 运行 时间戳的 createdon 和 modifiedon 时间戳过滤增量数据。
不用说,Activity是最繁琐的实体,涉及多个表,如Activity指针,Activity方等