如何将ListItem包装/转换/转换为生成的spmetal类? (linq 2 sharepoint)
谢谢!
更新
我正在寻找这些,因为事件接收器使用splistitems,我想在访问数据时使用强类型版本而不使用magiv字符串
答案 0 :(得分:1)
您是否有理由使用ListItem而不是使用LINQ to SharePoint来获取spmetal类?
据我所知,没有内置的方法,但你可以使用像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(除非你有一个执行不好的复杂查询)