EntityRef <t>问题,不从查找列表返回值</t>

时间:2010-07-06 08:30:47

标签: linq sharepoint-2010

好的,我会尽可能多地解释一下......

我有一个名为EEE Con​​tent 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值是否应该是类中集合的值,还是引用实际的查找列表名称?

1 个答案:

答案 0 :(得分:2)

想出来......

在使用SharePoint将使用带空格的FieldNames的正确命名约定的代码创建网站查找列时,我“假设”愚蠢。

所以fieldName是正确的,它的InternalName不是我期待的那个。由于sharepoint linq需要内部名称,因此它在Linq.SharePoint DLL中抛出了内部异常。