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説明されているようにを使用する場合。

次に、のプロパティを持つRetrieveAttributeResponsewith AttributeMetadataMSDN)が返されます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 に答える