gpt4 book ai didi

dynamics-crm-2011 - Microsoft Dynamics CRM 2011 将实体同步到外部数据库表中

转载 作者:行者123 更新时间:2023-12-02 22:10:17 25 4
gpt4 key购买 nike

我需要将某些实体(帐户、潜在客户、联系人等)同步到 crm 数据库之外但位于同一服务器上的数据库表。我正在寻找一种支持的方式来做到这一点。这是我尝试过的方法,但不起作用:

我首先在外部数据库中创建了与 dbo.account( View )中的模式相匹配的表。然后我编写了post create、post update、post assign 和post delete 插件来创建、更新或删除外部表中的记录(使用ADO.Net)。我以最通用的方式编写了该插件,以便它可以在对插件进行最少更改的情况下为任何实体注册(通过不对字段名称进行硬编码)。这样做,我遇到的问题是与其他表的外键字段有关。例如。在dbo.account中,有PrimaryContactId和PrimaryContactIdName,PreferredSystemUserId和PreferredSystemUserIdName,ParentAccountId和ParentAccountIdName等字段。在插件的输入参数中,xxxxId字段在更新时可用,但'xxxxIdName'字段不可用。因此,我无法按原样“同步”表格。

是否有使我的插件解决方案起作用的解决方案?是否有更好的支持方式来拥有同步表?提前致谢,

PS:1.数据同步要实时

PS: 2. 这是我获取执行更新的查询的函数

private static string PrepareUpdateQuery(ITracingService tracingService, IEnumerable<KeyValuePair<string, object>> attributeCollection, string entityName, string entityIdName)
{

var query = "Update MainDb.MSCRM." + entityName + " set ";
foreach (KeyValuePair<string, object> keyValuePair in attributeCollection)
{
tracingService.Trace("Key: {0}", keyValuePair.Key);
if (keyValuePair.Key != entityIdName && keyValuePair.Key != "modifiedonbehalfby")
{
query = query + keyValuePair.Key + " = ";
if (keyValuePair.Value == null)
query = query + "null, ";
else
{
var typeOfValue = keyValuePair.Value.GetType().Name;
tracingService.Trace("typeOfValue: {0}", typeOfValue);
switch (typeOfValue)
{
case "EntityReference":
query = query + "'" + ((EntityReference)keyValuePair.Value).Id + "', ";
break;
case "OptionSetValue":
query = query + ((OptionSetValue)keyValuePair.Value).Value + ", ";
break;
case "BooleanManagedProperty":
query = query + (((BooleanManagedProperty)keyValuePair.Value).Value ? "1" : "0") + ", ";
break;
default:
query = query + "'" + keyValuePair.Value + "', ";
break;
}
}
}
}
return query;
}

最佳答案

如果您所追求的只是作为当前执行插件属性的实体的名称,则 EntityReference 对象具有一个应包含该名称的 Name 属性。如果没有,您可以使用 ID 和逻辑名称查询 CRM,以获取您在引用实体上查找的任何值。

编辑1

如果您只是移动数据,为什么还要设置引用名称呢?我已经从您的数据库表中删除了这些名称,并且只创建了一个 View 来查找相应实体的名称。这就是 CRM 正在做的事情。它还使您的其他数据库更加规范化。 IE。如果您更新被另一个实体引用的实体的名称,您将必须搜索并更新所有这些名称...

关于dynamics-crm-2011 - Microsoft Dynamics CRM 2011 将实体同步到外部数据库表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15416520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com