Sharepoint 2010 listitem для класса linq 2 sharepoint spmetal

Как я могу обернуть / преобразовать / преобразовать ListItem в сгенерированный класс spmetal? (linq 2 sharepoint)

Спасибо!

Обновить:

Я ищу их, потому что получатели событий используют splistitems, и я хочу использовать версию с сильным типом и никаких строк magiv при доступе к данным

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 (если у вас нет сложного запроса, который не работает тогда)

Другие вопросы по тегам