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