wcf отправка linq в sql DataContext - PullRequest
       2

wcf отправка linq в sql DataContext

0 голосов
/ 08 сентября 2011

Предположим, у меня есть класс linq to sql. Я хочу вернуть объект datacontext через wcf. Я уже сделал базу данных однонаправленной. Я включил функцию WCF getString (), чтобы продемонстрировать, что служба wcf работает, если я закомментирую все о ToolboxDataContext.

 public interface Database()
{
   [OperationContract]
   ToolboxDataContext getCtx();

   [OperationContract]
   string getString();
} 
public class test: Database
        public ToolboxDataContext getCtx()
        {

          ToolboxDataContext  ctx = new ToolboxDataContext ();
          return ctx;
        }
 public string  getString()
        {
            return "WCF WORKS";
        }


[DataContract]
    public class Testing //my svc file
    {
        [DataMember]
        public ToolboxDataContext ctx;
        [DataMember ]
        public string Id;
    }

Ответы [ 2 ]

3 голосов
/ 08 сентября 2011

Является ли ваш ToolboxDataContext Entity Framework DataContext? Предполагая, что это ...

Я не уверен, что отправка всего объекта контекста данных по проводам - ​​это действительно то, что вы хотите сделать. Скорее всего, он не будет «работать» от клиента, который его получает. Например, вы не сможете выполнить оператор Linq против него и нажать на базу данных или что-нибудь ... Возможно, вы просто захотите вернуть объекты данных (не весь контекст), как показано здесь (MSDN) или, возможно, рассмотрите возможность использования WCF Data Services вместо этого?

Наверное, хороший вопрос. что клиент собирается делать с DataContext?

0 голосов
/ 08 сентября 2011

Это не кажется реальным вопросом (в чем ваша проблема и что вы спрашиваете?)

Но если предположить, что это просто идея, для которой вы хотите получить обратную связь - это не имеет смысла. Это эквивалент отправки соединения с базой данных вашему клиенту. Вы не можете сериализовать и десериализовать соединение, а затем повторно использовать его.

Datacontext - это объект, и поэтому вы сможете сериализовать его, как только убедитесь, что он снабжен правильными атрибутами, но он инкапсулирует соединение с базой данных. Соединение с базой данных не может быть сериализовано. Концептуально вся информация, которая описывает это соединение, может быть сериализована и доставлена ​​через WCF, но это потенциально может выявить недостатки в вашей системе.

Правильный шаблон для использования DataQtext LINQ-to-SQL - создать его экземпляр, выполнить все необходимые операции с базой данных и избавиться от них. Лучше не держать его в течение долгого времени и определенно не публиковать его вне вашего сервиса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...