Dynamics 2011 SDK Generic“添加新记录”功能

时间:2012-08-30 14:54:19

标签: c# sdk dynamics-crm-2011

我正在尝试编写一个通用的C#函数来向给定的实体添加新记录。 麻烦的是,在加载现有记录之前,我无法确定每个属性的类型,因此我遇到了错误。 我确信有办法做到这一点。

以下代码片段显示了我的内容:

foreach (DataRow row in data.Rows) // <== gets data for new records from DataTable
{
    entity = new Entity(this.Entity); // <== an existing entity type
    Type columnType;
    foreach (SourceColumn column in this.Columns)
    {
        columnType = entity[column.Name].GetType(); // <== fails because not loaded
        entity[column.Name] = Convert.ChangeType(row[column.Name], columnType);
    }
    xrm.Create(entity);
}

我应该做什么呢?

有没有办法在不加载实体记录的情况下加载实体定义?

由于

2 个答案:

答案 0 :(得分:2)

我认为在这种情况下,您最好使用元数据网络服务。

如果您使用RetrieveAttributeRequest所述here

然后,这会返回RetrieveAttributeResponse AttributeMetadata AttributeType MSDN),其中包含{{1}}的属性。

答案 1 :(得分:0)

你可以使用反射。

所以你的代码看起来像这样

var columnType = entity.GetType().GetProperties().First(p => p.Name == column.Name).GetType();