Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
SharePoint, LINQ, OData
1. SharePoint, LINQ иOpen Data Protocol Vitaly Baum Senior SharePoint Developer @ Conteq Активный участник групп разработчиков в Санкт-Петербурге и Москве, подкастер и блоггер http://butaji.ru
4. Преимущества LINQ Строгая типизация Запросы к реляционным данным в строго-типизированной форме Компилятор проверит ошибки в запросах IntelliSense Унифицированный путь получения данных из любого источника
5. LINQ to SharePoint SPMetal Генерирует DataContext SPMetal /web:http://ContosoServer/Marketing /code:MarketingSite.cs
6. LINQ to SharePoint Недостатки Преобразуется в CAML Не все операторы реализованы Двухэтапные запросы Аггрегирующие запросы SPSiteDataQuery
7. Mapping internal partial class OrganisationSiteDataContext : Microsoft.SharePoint.Linq.DataContext{} [ContentType(Name = "Employee")] public partial class Employee { [Column(Name="ID", IsId=true, ReadOnly=true, FieldType="Counter")] public int Id {get; set;} }
8. ICostumMapping public partial class Project : ICustomMapping { [CustomMapping(Columns = new String[] { «Due_x0020_Date», «IsCancelled» })] public void MapFrom(object listItem) { this.DueDate= ((SPListItem)listItem)[“Due_x0020_Date”]; this.IsCancelled = ((SPListItem)listItem)[“IsCancelled”]; } public void MapTo(object listItem) { ((SPListItem)listItem)[“Due_x0020_Date”] = this.DueDate; ((SPListItem)listItem)[“IsCancelled”] = this.IsCancelled; } public void Resolve(RefreshMode mode, object originalListItem, object databaseObject) { } }
22. Open Data Protocol http://localhost:8080/owind.svc/Categories(2)/Description <Description xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices"> Sweet and savory sauces, relishes, spreads, and seasonings </Description>
23. Open Data Protocol http://localhost:8080/owind.svc/Categories(2)/Description/$value Sweet and savory sauces, relishes, spreads, and seasonings
34. Готовим ODataEntity Framework, LINQ to SQL public class ProductService : DataService<ProductEntities> { public static void InitializeService(DataServiceConfigurationconfig) { // Give readonly access to all of the entities config.SetEntitySetAccessRule("*", EntitySetRights.AllRead); // Pagesize will change the max number of rows returned config.SetEntitySetPageSize("*", 25); config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2; } }
35. Готовим ODataReflection Provider public class MyDataSource { public IQueryable<Product> Products { get {…} } public IQueryable<Categories> Categories { get {…} } } public class MyDataSourceService: DataService<MyDataSource> { … }
38. SharePoint OData Content database SharePoint Data SharePoint LINQ to SharePoint ListData.svc Atom JSON Post, Put, Get Client Application Любая платформа .NET, Java, Flash, Silverlight
39. SharePoint OData Операции и HTTP действия Получение данных GET Создание записи POST Изменение записи PUT илиMERGE Удаление записи DELETE И всё это действует на ссылки Все политики SharePoint работают Валидация, Контроль доступа и т.д.