0

私は SP2010 で OOB ブログ サイトに取り組んでいます。SPMetal を使用して、Posts リストのエンティティ クラスを生成しています (とりわけ)。parameters.xml ファイルを使用して、デフォルトでは含まれていない必要な他の列を取得しました。

私がやりたいことの 1 つは、ユーザーの個人用サイトの URL を取得することです。これは、CAML で比較的簡単に行うことができます。ただし、Linq を使用して行う必要があります。Author フィールドのログイン ID (ドメイン\ID) を取得する方法がわかりません。Contact コンテンツ タイプを確認しましたが、何も役に立たないようです。

これに出くわしたり、SPMetal を使用しているユーザーのログイン ID を取得したりした人はいますか?

4

1 に答える 1

0

Postsを使用してリストのエンティティを作成SPMetel.exeし、投稿リストでフィールドタイプがユーザーであると仮定すると、LookupId と LookupValue のような 2 つのメソッドが自動的に返されます。

私の場合:2つのメソッドを持つエンティティpromoteridのリストのフィールド名として取得しましたPosts

    private System.Nullable<int> _promoterId;
    private string _promoter;
    [Microsoft.SharePoint.Linq.ColumnAttribute(Name="promoterid", Storage="_promoterId", FieldType="User", IsLookupId=true)]
    public System.Nullable<int> PromoterId {
    get {
        return this._promoterId;
    }
    set {
        if ((value != this._promoterId)) {
            this.OnPropertyChanging("PromoterId", this._promoterId);
            this._promoterId = value;
            this.OnPropertyChanged("PromoterId");
        }
    }
}

[Microsoft.SharePoint.Linq.ColumnAttribute(Name="promoterid", Storage="_promoter", ReadOnly=true, FieldType="User", IsLookupValue=true)]
public string Promoter {
    get {
        return this._promoter;
    }
    set {
        if ((value != this._promoter)) {
            this.OnPropertyChanging("Promoter", this._promoter);
            this._promoter = value;
            this.OnPropertyChanged("Promoter");
        }
    }
}

linqクエリを使用して使用できるようになった後よりも

すなわち

     SPWeb oWebsiteRoot = SPContext.Current.Web;
     EntitiesDataContext objent = new EntitiesDataContext(oWebsiteRoot.Url);
     EntityList<PostsItem> evnitems = objent.GetList<PostsItem>("Posts");
     var i =  from item in evnitems
              where item.PromoterId == SPContext.Current.Web.CurrentUser.ID 
             select item;
于 2012-06-07T17:38:43.583 に答える