ListItem を生成された spmetal クラスにラップ/変換/キャストするにはどうすればよいですか? (linq 2 シェアポイント)
ありがとう!
アップデート:
イベント レシーバーが splistitem を使用しており、データにアクセスするときに強力な型のバージョンを使用し、magiv 文字列を使用したくないため、これらを探しています。
ListItem を生成された spmetal クラスにラップ/変換/キャストするにはどうすればよいですか? (linq 2 シェアポイント)
ありがとう!
アップデート:
イベント レシーバーが splistitem を使用しており、データにアクセスするときに強力な型のバージョンを使用し、magiv 文字列を使用したくないため、これらを探しています。
LINQ to SharePoint を使用して spmetal クラスを取得する代わりに、ListItem を使用する理由はありますか?
私の知る限り、組み込みの方法はありませんが、automapper などのツールを使用してこれを行うことができます。
Mapper.CreateMap<SPListItem, HandbookCodesHandbookCode>()
.ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.ID))
.ForMember(dest => dest.CodeDescription, opt => opt.MapFrom(src => src["CodeDescription"]));
SPWeb web = SPContext.Current.Site.RootWeb;
SPList list = web.Lists["HandbookCodes"];
SPListItem item = list.GetItemById(1);
HandbookCodesHandbookCode hc = Mapper.Map<SPListItem, HandbookCodesHandbookCode>(item);
これを行う別の方法は、LINQ to SharePoint を使用し、クエリを作成して次のようにすることです。
HandbookTeamSiteDataContext ctx = new HandbookTeamSiteDataContext(SPContext.Current.Site.RootWeb.Url);
var hb = from h in ctx.HandbookCodes
where h.Id == 1
select h;
SPListItem (イベント レシーバーとワークフロー) が与えられない限り、SPListItem を取得する代わりにこれを使用しようとします (うまく機能しない複雑なクエリがない限り)