【问题标题】:Dynamics Crm Data validation for ssis packagesssis 包的 Dynamics Crm 数据验证
【发布时间】:2016-09-20 12:00:34
【问题描述】:

我目前正在使用 ssis 包中的 C# 脚本组件将数据从平面文件导入 CRM 数据库。 现在,我需要对以下数据进行数据验证:

  1. 在crm中检查属性是否为必填字段
  2. 检查属性是否采用正确的数据类型
  3. 查看Text类型属性的长度和最大、最小尺寸
  4. 检查查找和选择列表类型属性是否引用了正确的架构

所有这些我都需要使用 C# 代码在 ssis 脚本组件中进行验证。 我对此类数据验证非常陌生。

我尝试使用数据转换转换和数据分析任务进行数据验证,后来知道这不是正确的方法,它应该在 c# 代码中。

我后来尝试了这样的验证:

while (string.IsNullOrEmpty(Row.AccountName))
{
    MessageBox.Show("Account Name should not be Blank");
    if (!string.IsNullOrEmpty(Row.AccountName))
    {
        break;
    }
}

if (!string.IsNullOrEmpty(Row.AccountName))
{
    if (Row.AccountName.Length <= 20)
        newaccount["name"] = Row.AccountName;

    while (Row.AccountName.Length >= 20)
    {
        MessageBox.Show("Account name is too long and it should be less than 251 characters");
        if (Row.AccountName.Length <= 20)
            newaccount["name"] = Row.AccountName;
        }
    }
}

但我需要从 CRM 元数据中访问长度和其他属性。请指教。

【问题讨论】:

标签: c# validation ssis dynamics-crm crm


【解决方案1】:

这里有一些示例代码可以帮助您入门:

using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Messages;
using Microsoft.Xrm.Sdk.Metadata;
using Microsoft.Xrm.Tooling.Connector;
using System.Collections.Generic;
using System.Linq;

public void Run(IOrganizationService svc)
{
    var all = allAttributes(svc, "account");

    var accountNum = all.Where(a => a.LogicalName == "accountnumber").FirstOrDefault();

    var isRequired = accountNum.RequiredLevel.Value == AttributeRequiredLevel.SystemRequired;

    var type = accountNum.AttributeType;

    //to get max length, cast AttributeMetadata instance to appropriate type
    var myStringAttribute = accountNum as StringAttributeMetadata;

    var maxLength = myStringAttribute.MaxLength;
}

//Retrieve all attributes of an entity
private List<AttributeMetadata> allAttributes(IOrganizationService svc, string entity)
{
    var req = new RetrieveEntityRequest();

    req.EntityFilters = EntityFilters.Attributes;

    req.LogicalName = entity.ToLower();

    var response = (RetrieveEntityResponse)svc.Execute(req);

    return response.EntityMetadata.Attributes.ToList();
}

【讨论】:

    猜你喜欢
    • 2022-11-11
    • 1970-01-01
    • 2013-11-27
    • 2023-03-29
    • 2021-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-21
    相关资源
    最近更新 更多