2017-04-24 1 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

관련 문제