如何将 ListItem 包装/转换/转换为生成的 spmetal 类?(linq 2 共享点)
谢谢!
更新:
我正在寻找这些,因为事件接收器使用 splistitems,我想在访问数据时使用强类型版本并且没有 magiv 字符串
如何将 ListItem 包装/转换/转换为生成的 spmetal 类?(linq 2 共享点)
谢谢!
更新:
我正在寻找这些,因为事件接收器使用 splistitems,我想在访问数据时使用强类型版本并且没有 magiv 字符串
您是否有理由使用 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(除非您有一个复杂的查询,然后性能不佳)