SPMetal何时为查找字段生成EntityRef属性?

时间:2011-07-25 10:08:49

标签: sharepoint-2010 lookup linq-to-sharepoint

我定义了一个名为 SPVideoDataItem 的内容类型,其中包含以下两个字段:

<Field ID="{487F2AD6-D9D6-47AA-AA99-B3FFF893E689}" Name="LUVideoQuality" Group="Custom Columns" Type="Lookup" DisplayName="Video Quality" List="Lists/GlobalVideoQualityList" ShowField="Title" PrependId="TRUE" ShowInEditForm="TRUE" ShowInNewForm="TRUE"/>
<Field ID="{F348A825-764D-41EE-AF92-8CF1DC246E47}" Name="LUVideoTitle" Group="Custom Columns" Type="Lookup" DisplayName="Video Title"  List="Lists/VideoItemList" ShowInEditForm="TRUE"  ShowInNewForm="TRUE" ShowField="VideoItemTitle" PrependId="TRUE" Required="TRUE"/>

对于LUVideoQuality,我在名为 VideoItemDataListSPVideoDataItem 的类中获取属性:

public SPVideoQualityItem VideoQuality

公开了EntityRef-Member,因此我可以访问SPVideoQualityItem的所有属性。

但是,对于LUVideoTitle,spmetal只在父类中生成两个属性 SPVideoDataItem

public string VideoTitleVideoItemTitle
public System.Nullable<int> VideoTitleId 

我只能访问标题和ID。

我想知道为什么spmetal会以不同的方式处理这两个查找。谁能解释这种行为?我希望在我的示例中所有查找都像LUVideoQuality一样处理。

2 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。

当我放弃创建单独内容类型的原则并且只是基于内容类型Item创建列表时,它确实生成了实体引用。

答案 1 :(得分:0)

显然它与查找字段的“WebId”属性有关。一位同事告诉我,他们通过添加

来实现它
WebId="~sitecollection" 

到内容类型定义(Elements.xml)中的所有查找字段。我没有将此标记为答案,因为由于此属性或定义中的其他一些更改,我现在没有检查它是否正常工作。