Как я могу "обернуть" контекст данных Linq2Sql в веб-сервис? - PullRequest
1 голос
/ 29 августа 2011

Соответствует: Visual Studio 2010, WCF WebServices, Linq2Sql, .Net 4.0

Простите, если это глупый вопрос, но я считаю, что видел нечто похожее на то, что я пытаюсь сделать.

У нас есть контекст данных Linq2Sql, который мы используем для чтения / записи в базу данных. Мы хотели бы предоставить публичный API для базы данных для определенных поставщиков. Кажется, я вспоминаю способ раскрытия большей части функциональности контекста данных через веб-сервис без создания оболочек для всех методов CRUD вручную. Кто-нибудь знает, как это сделать? Кажется, я помню, как просматривал контекст данных, предоставляемый через веб-сервис, всего несколькими строками кода.

Нам также нужно было бы запретить доступ к некоторым методам, основанным на разрешениях, но, вероятно, мы сами сможем решить эту проблему.

Ответы [ 2 ]

3 голосов
/ 29 августа 2011

Не уверен, что вы видели или на что ссылаетесь ... но службы данных WCF кажутся вам тем, что вам нужно - проверьте их на http://msdn.microsoft.com/en-us/data/bb931106.aspx

2 голосов
/ 29 августа 2011

@ Яхья указал мне правильное направление.Эта статья - почти то, что я искал, но она касается моделей данных сущностей ADO.Net, а не контекстов данных LINQ.Очень близко ... Доступ к данным с помощью ADO.Net Data Services .

Итак, получается, что ответ довольно прост.

  1. Создать новыйВеб-приложение ASP.Net.
  2. Щелкните правой кнопкой мыши веб-приложение.
  3. Добавить -> Новый элемент -> Служба данных WCF.
  4. Изменить коддля поддержки вашего контекста:

    using System.Data.Services;
    using System.Data.Services.Common;
    
    namespace DelvingWare.Data.FilestreamServer.WebServices
    {
        public class WcfDataService1 : DataService<MyDataContext>
        {
            // This method is called only once to initialize service-wide policies.
            public static void InitializeService(DataServiceConfiguration config)
            {
                // TODO: set rules to indicate which entity sets and service operations are visible, updatable, etc.
                // Examples:
                config.SetEntitySetAccessRule("MyEntitySet", EntitySetRights.ReadSingle);
                config.SetServiceOperationAccessRule("MyEntitySet", ServiceOperationRights.ReadSingle);
                config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
            }
        }
    }
    
  5. Сборка -> Сервис правой кнопкой мыши -> Просмотр в браузере.Вуаля!

...