0

如何将 ListItem 包装/转换/转换为生成的 spmetal 类?(linq 2 共享点)

谢谢!

更新:

我正在寻找这些,因为事件接收器使用 splistitems,我想在访问数据时使用强类型版本并且没有 magiv 字符串

4

1 回答 1

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(除非您有一个复杂的查询,然后性能不佳)

于 2012-08-06T19:45:13.357 回答