0

我正在尝试编写一个通用 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);
}

我应该怎么做?

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

谢谢

4

2 回答 2

2

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

如果您使用此处RetrieveAttributeRequest描述的 a 。

然后这将返回一个RetrieveAttributeResponsewith AttributeMetadata( MSDN),它具有AttributeType.

于 2012-08-30T15:15:48.420 回答
0

你可以使用反射。

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

var columnType = entity.GetType().GetProperties().First(p => p.Name == column.Name).GetType();
于 2012-08-30T15:01:22.320 回答