如何:创建多值属性

上次修改时间: 2010年3月22日

适用范围: SharePoint Server 2010

属性现在支持多个值。此改进对许多方案都很有用;例如,当定义通常包含多个值的属性时,如用户的兴趣和的专长。

对象模型中的 IsMultiValued 参数指示属性是否为多值属性。但是,如属性数据类型一样,该参数一经设置便不可修改。

对象模型作为 ArrayList 对象返回多值属性的多个值。集合中值的顺序与更新顺序相同。有关示例,请参阅如何:为多值属性设置多个值

多值属性也可加索引。目前,SharePoint Server 2010 中的SharePoint 企业级搜索支持多值属性的 Contains 和 Equals 子句。

请注意,SharePoint Server 2010 允许您将连接源中的多值属性映射到单值门户属性。当您导入属性时,导入操作会尝试从源中获取第一个值。

下面的代码示例为您演示如何创建多值属性。如果使用本示例,请用实际值替换 servername。此外,还应在 Microsoft Visual Studio 项目中添加对以下项目的引用:

  • Microsoft.Office.Server

  • Microsoft.Office.Server.UserProfiles

  • Microsoft.SharePoint

  • System.Web

示例

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Office.Server;
using Microsoft.Office.Server.Administration;
using Microsoft.Office.Server.UserProfiles;
using Microsoft.SharePoint;
using System.Web;

namespace UserProfilesOMApp
{
    class Program
    {
        static void Main(string[] args)
        {
            //Code example adds a new property called Published Papers.
            using (SPSite site = new SPSite("https://servername"))
            {
                SPServiceContext context = SPServiceContext.GetContext(site);
                UserProfileConfigManager upcm = new UserProfileConfigManager(context);

                try
                {
                    ProfilePropertyManager ppm = upcm.ProfilePropertyManager;

                    // create core property
                    CorePropertyManager cpm = ppm.GetCoreProperties();
                    CoreProperty cp = cpm.Create(false);
                    cp.Name = "Published Papers";
                    cp.DisplayName = "Published Papers";
                    cp.Type = PropertyDataType.StringMultiValue;
                    cp.Length = 100;
                    cp.IsMultivalued = true;
                    cpm.Add(cp);

                    // create profile type property
                    ProfileTypePropertyManager ptpm = ppm.GetProfileTypeProperties(ProfileType.User);
                    ProfileTypeProperty ptp = ptpm.Create(cp);
                    ptp.IsVisibleOnEditor = true;
                    ptp.IsVisibleOnViewer = true;
                    ptpm.Add(ptp);

                    // create profile subtype property
                    ProfileSubtypeManager psm = ProfileSubtypeManager.Get(context);
                    ProfileSubtype ps = psm.GetProfileSubtype(ProfileSubtypeManager.GetDefaultProfileName(ProfileType.User));
                    ProfileSubtypePropertyManager pspm = ps.Properties;
                    ProfileSubtypeProperty psp = pspm.Create(ptp);

                    psp.IsUserEditable = true;
                    psp.PrivacyPolicy = PrivacyPolicy.OptIn;
                    psp.DefaultPrivacy = Privacy.Organization;

                    pspm.Add(psp);
                }
                catch (DuplicateEntryException e)
                {
                    Console.WriteLine(e.Message);
                    Console.Read();
                }
                catch (System.Exception e2)
                {
                    Console.WriteLine(e2.Message);
                    Console.Read();
                }
            }
        }
    }
}

请参阅

任务

如何:为多值属性设置多个值

如何:更改配置文件属性

如何:创建分类多值属性

如何:为用户配置文件属性设置隐私策略