Как переместиться от LINQ до SQL к “LINQ к WCF”?

Вероятно, вам не понравится этот ответ, но перегрузка для Page.LoadControl, которая позволяет указывать тип элемента управления и добавление аргументов конструктора, не привязывает ascx к выделенному коду и всем связанным дочерним элементам управления. в конечном итоге будет нулевым.

В прошлом я работал над этим, добавляя еще один метод для установки зависимостей после создания пользовательского элемента управления, но это не идеальное решение.

Это сказало, что ты не делаешь ничего плохого. Привязка будет работать правильно, если вы используете Page.LoadControl("~/path/to/mycontrol.ascx"), но у вас не будет инжектора конструктора.

Я полагаю , что проблема заключается в том факте, что базовый класс на самом деле не имеет отношения с интерфейсной страницей, кроме как через директиву page, которая определяет его как класс code-behind. Ничто не останавливает несколько разных внешних интерфейсов, использующих один и тот же класс, как его код-сзади, поэтому загрузка с помощью Type делает либо очень трудным, либо полным невозможным определить, каким будет правильное ascx связывание.

7
задан Rex M 2 May 2009 в 01:46
поделиться

4 ответа

Вы взглянули на Услуги передачи данных ADO.NET. Здесь можно запросить хранилище данных по проводу с linq синтаксисом.

Вы сохраните LINQ к контексту данных SQL, но выставите его сети и позволите Вашим клиентам запрашивать контекст в стандартных операторах LINQ. Необходимо было бы, очевидно, защитить Услуги передачи данных поэтому, только авторизовал клиенты, может соединиться, но по существу с минимальной работой Вы можете получить свой контекст данных "сторона клиента" так сказать.

2
ответ дан 7 December 2019 в 03:21
поделиться

Вы, вероятно, захотите Услуги передачи данных ADO.NET. Необходимо будет добавить реализацию интерфейса IUpdatable к объектам, и можно использовать LINQ для SQL, Платформы Объекта, SubSonic или многих других. Мы используем шаблоны CodeSmith PLINQO, которые позволяют Вам добавлять эту функциональность к LINQ к SQL.

5
ответ дан 7 December 2019 в 03:21
поделиться

Универсальный LINQ к WCF не может иметь смысла. В частности, WCF звонит, только выставляют данные в очень особенных методах, которые действительно не соответствуют способу LINQ сделать вещи. Например, мой сервис мог иметь следующий контракт:

List<DAO> GetObjectsInDateRange(DateTime start, DateTime end);
void ExportObjectsToLegacySystem(List<DAO> data);

Как Вы выражаете любого в формате LINQ. В частности, когда запускаются, и конец не члены ДАО. Единственный способ выразить это состоял бы в том, чтобы сервис выставил интерфейс IQueryable, и я не знаю, как возможный, который является.

Теперь, можно всегда делать:

var data = from dao 
in wcfService.GetObjectsInDateRange(DateTime.Today,DateTime.Today.AddDays(50))
where dao.AmountOfStuff > 20
select dao;

Однако можно, конечно, создать интерфейс LINQ, адаптированный в соответствии с собственным сервисом. Скажем, Ваш сервис имеет метод:

List<DAO> GetObjects(DAOFilter filterObject);

где DAOFilter является объектом, который указывает все Ваш, "где" критерии, что можно сделать, записать поставщику LINQ, который переводит все Выражения в этот объект DAOFilter. Это было бы невероятно одноразовым решением со значительным объемом работы, таким образом, я отговорю от него.

Я повторяю совет смотреть на Услуги передачи данных ADO.NET.

2
ответ дан 7 December 2019 в 03:21
поделиться

Вы можете добавить класс LINQ в SQL напрямую в проект WCF и установить режим сериализации на LINQ в класс SQL в однонаправленную. Если вы это сделаете, классы будут отображаться по службе WCF.

0
ответ дан 7 December 2019 в 03:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: