好的,我会尽可能多地解释一下......
我有一个名为EEE Content Type的Site Lookup列,它引用了Site Site Item Type Types List。
现在在我的自定义列表(继承自Item)中,我正在引用该列,它会在sharepoint中显示并显示查找值。
问题是当我使用SPMetal.exe生成类型时,“键不存在于词典中”并且失败。所以我删除了SPMetal的parameters.xml文件中列的定义,并重新生成了类。
现在我手动添加了属性和关联。
private EntityRef<SiteContentItemTypeItem> _eeeContentType;
[Association(Name = "EEE_x0020_Content_x0020_Type", Storage = "_eeeContentType", MultivalueType = AssociationType.Single, List = "Site Content Item Types")]
public SiteContentItemTypeItem EEEContentType
{
get
{
return this._eeeContentType.GetEntity();
}
set
{
this._eeeContentType.SetEntity(value);
}
}
SiteContentItemTypeItem继承自Item,因此其类为空。
但是当我加载我创建的自定义列表时,我得到第一个条目,EEEContentType字段为空...
using (IntranetDataContext context = new IntranetDataContext("http://siteurl")) {
context.ObjectTrackingEnabled = false;
EntityList<SiteContentItem> alerts = context.GetList<SiteContentItem>("User Alerts");
SiteContentItem alert = (from tmpalert in alerts where tmpalert.Id == 1 select tmpalert).First();
SiteContentItemTypeItem contentType = alert.EEEContentType;
}
我完全没有想法......
Association属性中的List值是否应该是类中集合的值,还是引用实际的查找列表名称?
答案 0 :(得分:2)
想出来......
在使用SharePoint将使用带空格的FieldNames的正确命名约定的代码创建网站查找列时,我“假设”愚蠢。
所以fieldName是正确的,它的InternalName不是我期待的那个。由于sharepoint linq需要内部名称,因此它在Linq.SharePoint DLL中抛出了内部异常。