用参数 XML 文件替代 SPMetal 默认值

上次修改时间: 2011年3月10日

适用范围: SharePoint Foundation 2010

本文内容
SPMetal 参数 XML 文件
SPMetal 默认值
更改默认行为

本主题介绍如何使用 XML 标记文件更改 SPMetal 在代码生成方面的默认行为,包括在它生成的代码中对哪些列表、内容类型和列建模。

SPMetal 参数 XML 架构 主题的开头提供了在文件中使用的 XML 标记的正式参考。

SPMetal 参数 XML 文件

SPMetal 参数 XML 文件包含 XML 标记,这些标记告知 SPMetal 有关它应该生成的代码的某些详细信息。特别是,它指定了应该在代码中对哪些列表、内容类型和字段(列)进行建模。该文件通过 /parameters 命令行选项传递给 SPMetal。有关 SPMetal 命令行选项的详细信息,请参阅 SPMetal

SPMetal 默认值

SPMetal 不需要参数 XML 文件。在缺少此文件时,它将使用默认规则。如果使用参数文件,则 SPMetal 使用其默认规则,但与参数文件明显冲突的规则除外。有关这些规则的详细信息,请参阅 SPMetal 默认代码生成规则

更改默认行为

本节介绍如何使用参数 XML 文件中的标记更改 SPMetal 的某些默认行为。

Web 元素

顶级元素为 <Web>。如果您不希望使用 SPMetal 默认情况下提供给 DataContext 派生类(表示所有网站内容)的名称,请设置其 Class 属性。如果希望生成的类为 internal(在 Microsoft Visual Basic 中为 Friend),请将其 AccessModifier 属性设置为"Internal"。默认值为 Public。

List 元素

如果希望更改 SPMetal 生成表示列表的属性的方式,请添加 <List> 元素作为 <Web> 元素的子项。还可以添加 <List> 元素以强制 SPMetal 生成相关类来表示默认情况下它不会建模的列表(如隐藏列表)。将必需的 Name 属性设置为列表的名称。

如果不希望使用 SPMetal 默认情况下提供给表示列表的属性的名称,请使用 Member 属性指定其他名称。例如,默认情况下,SPMetal 使用"Calendar"作为 Calendar 列表的属性名称。可以使用标记 <List Name="Calendar" Member="ScheduledEvents"/> 将名称更改为 ScheduledEvents。

如果不希望列表项的类型是 SPMetal 默认情况下指定的类型,请将 Type 参数设置为其他类型。例如,您可能在单独的代码文件中创建了一个类,它与 SPMetal 将创建为列表项类型的类一样,但包含一个额外的可写属性。您可以指定将您的类作为列表项类型,并编写用于写入 LINQ 查询所返回列表项的该属性的调用代码。

备注

不要使用 <List> 的 Type 属性直接重命名 SPMetal 生成的代表列表项类型的类,而应该使用 <List> 元素的子元素 <ContentType> 的 Class 属性。请参阅下文中的 ContentType 元素

<List> 元素具有两个可能的子元素:<ContentType> 和 <ExcludeContentType>。这些元素的功能与作为 <Web> 元素子项的同名元素的功能相同,不同的是应用它们的内容类型的范围是列表而不是整个网站。

ExcludeList

将此子元素添加到 <Web> 元素中可以阻止 SPMetal 生成相关属性来表示特定列表。将必需的 Name 属性设置为列表的名称。

ExcludeOtherLists

将此子元素添加到 <Web> 元素中可以阻止 SPMetal 生成相关属性来表示未由 <List> 元素显式表示的任何列表。不能同时包含此元素和 <IncludeHiddenLists> 元素。

IncludeHiddenLists

将此子元素添加到 <Web> 元素中可以强制 SPMetal 生成相关属性来表示所有隐藏列表。不能同时包含此元素和 <ExcludeOtherLists> 元素。

ContentType 元素

如果希望更改 SPMetal 生成表示内容类型的类的方式,请添加 <ContentType> 元素作为 <Web> 元素(或 <List> 元素)的子项。还可以添加 <ContentType> 元素以强制 SPMetal 生成相关类来表示默认情况下它不会建模的内容类型(如隐藏的内容类型)。将 <ContentType> 元素必需的 Name 属性设置为内容类型的名称。(使用"Item"作为基本 SharePoint Foundation 内容类型的名称)。

如果不希望使用 SPMetal 默认情况下提供给表示内容类型的类的名称,请使用 Class 属性指定其他名称。例如,如果网站包含"团队成员"列表并且已向其中添加列,则 SPMetal 默认情况下会创建 TeamMembersItem 类作为列表项的类型并将其指定为表示列表的 EntityList<TEntity> 属性的类型参数。可以使用以下标记将类型参数更改为更容易看懂的内容,如 TeamMember

<List Name="Team Members">
    <ContentType Name="Item" Class="TeamMember" />
</List>

如果希望生成的类为 internal(在 Visual Basic 中为 Friend),请将 AccessModifier 属性设置为"Internal"。默认值为 Public。无其他选项。

Column 元素

将此子元素添加到 <ContentType> 元素中可以强制 SPMetal 创建相关属性来表示默认情况下它不会建模的字段(列),如隐藏字段。将必需的 Name 属性设置为字段的内部 名称。如果父 <ContentType> 元素是 <List> 元素的子项,则还可以包含 <Column> 元素来表示列表中的字段,而不是内容类型本身中的字段,向列表中添加列后可能会发生这种情况。

如果不希望使用 SPMetal 默认情况下提供给表示字段的属性的名称,请使用 Member 属性指定其他名称。

如果字段是选项字段,并且您希望即使字段不允许"填充"选项,对字段进行建模的属性的类型仍为 String,则将 Type 属性设置为"String"。(默认情况下,SPMetal 将使用列定义中指定的允许值为不允许"填充"选项的任何选项列生成枚举类声明。)有关 LINQ to SharePoint 如何将 SharePoint Foundation 字段类型映射到 Microsoft .NET Framework 3.5 数据类型的详细信息,请参阅 类型映射:从 LINQ to SharePoint 提供程序映射到 .NET

ExcludeColumn 元素

将此子元素添加到 <ContentType> 元素中可以阻止 SPMetal 生成表示特定字段(列)的属性。将必需的 Name 属性设置为字段的内部 名称。

ExcludeOtherColumns 元素

将此子元素添加到 <ContentType> 元素中可以阻止 SPMetal 生成相关属性来表示未由 <Column> 元素显式表示的任何列。不能同时包含此元素和 <IncludeHiddenColumns> 元素。

IncludeHiddenColumns 元素

将此子元素添加到 <ContentType> 元素中可以强制 SPMetal 生成用于表示内容类型的所有隐藏字段的属性。不能同时包含此元素和 <ExcludeOtherColumns> 元素。

ExcludeContentType

将此子元素添加到 <Web> 元素(或 <List> 元素)中可以阻止 SPMetal 生成用于表示特定内容类型的类。将必需的 Name 属性设置为内容类型的名称。

备注

如果将生成的其他内容类型类继承自阻止的类,则不能阻止生成表示内容类型的类。例如,如果尝试使用 <ExcludeContentType Name="Item" /> 元素阻止生成表示基本未命名 SharePoint Foundation 内容类型(称为"Item")的类,则还必须为从项目继承的每个内容类添加 <ExcludeContentType /> 元素。

ExcludeOtherContentTypes

将此子元素添加到 <Web> 元素中可以阻止 SPMetal 生成相关类来表示未由 <ContentType> 元素显式表示的任何内容类型。不能同时包含此元素和 <IncludeHiddenContentTypes> 元素。

IncludeHiddenContentTypes

将此子元素添加到 <Web> 元素中可以强制 SPMetal 生成用于表示所有隐藏内容类型的类。不能同时包含此元素和 <ExcludeOtherContentTypes> 元素。

SPMetal 参数 XML 文件的示例

<?xml version="1.0" encoding="utf-8"?>
<Web AccessModifier="Internal" xmlns="https://schemas.microsoft.com/SharePoint/2009/spmetal">
  <ContentType Name="Contact" Class="Contact">
    <Column Name="ContId" Member="ContactId" />
    <Column Name="ContactName" Member="ContactName1" />
    <Column Name="Category" Member="Cat" Type="String"/>
    <ExcludeColumn Name="HomeTelephone" />
  </ContentType>
  <ExcludeContentType Name="Order"/>
  <List Name="Team Members" Type="TeamMember">
    <ContentType Name="Item" Class="TeamMember" />
  </List>
</Web>

请参阅

任务

如何:使用 SPMetal

引用

SPMetal

概念

SPMetal 参数 XML 架构

SPMetal 默认代码生成规则

类型映射:从 LINQ to SharePoint 提供程序映射到 .NET