2017-04-24 9 views
0

DB内のテーブルを変更するのに似た操作が必要な場合は、EWS拡張プロパティのデータ型を変更するかどうかを知りたいですか?C#EWS拡張プロパティのMapiPropertyTypeを変更する

現在、カスタム拡張プロパティを宣言して使用していますが、今はMapiPropertyType.IntegerからMapiPropertyType.Longに変更します。

次は私の現在のような例のプロパティ定義である:

static class MyAppSchema { 
    private static readonly Guid property_set = Guid.Parse("{my guid value}"); 
    public static ExtendedPropertyDefinition ItemId = new ExtendedPropertyDefinition(
     propertySetId: property_set, 
     name: "ItemId", 
     mapiType: MapiPropertyType.Integer 
    ); 
}

私は現在、このようにそれを使用します。

  • item.SetProperty<int>(MyAppSchema.ItemId, item_from_another_db.ItemId);

私は次の使用を開始したいと思います代わりにプロパティ定義:

static class MyAppSchema { 
    private static readonly Guid property_set = Guid.Parse("{my guid value}"); 
    public static ExtendedPropertyDefinition ItemId = new ExtendedPropertyDefinition(
     propertySetId: property_set, 
     name: "ItemId", 
     mapiType: MapiPropertyType.Long 
    ); 
}

私はこのようにそれを使用して起動したい:

  • item.SetProperty<long>(MyAppSchema.ItemId, item_from_another_db.ItemId);

あり、関係のメールボックス内の既存のデータがあると、私はまだSearchFilter.IsEqualToのような検索フィルタを使用できるようにしたいと思います。私は、データタイプを変更すると、後で自分自身に問題を設定することになるのではないかと心配しています。

答えて

2

できません - 特定のメールボックスでカスタムプロパティを使用すると、そのプロパティとその定義は永遠に残っています。別のタイプが必要な場合は、別の名前のプロパティを作成する必要があります。

+0

バグ私はあなたがそれを言ってほしくないと思っていました。サポート文書があるかどうか知っていますか?私は作成、設定、取得する方法しか見つけられなかったか、文書化が不可能であると仮定しているのでしょうか? – Robert

+1

これは特にMAPIで扱われます。通常のSQLデータベースであっても、既存のすべてのデータを新しいタイプに変換する必要があります(変換できれば(例えば、文字列をintに変換できない場合があります)。すべてのデータをコピーし、列を削除し、再作成し、データを変換およびコピーすることです。非常に高価です。 –

+0

参照を容易にするため、次のMSDNリンクでプロパティを削除する方法を示します。https://msdn.microsoft.com/en-us/library/office/dd633629(v=exchg.80).aspx – Robert

関連する問題