LINQ to SQL в клиенте Silverlight - PullRequest
0 голосов
/ 29 ноября 2011

Хорошо, у меня есть клиентская программа Silverlight. Мне не разрешено использовать веб-проект , но мне нужно иметь возможность читать данные из базы данных SQL.

Некоторые поиски в Интернете привели меня к LINQ to SQL иобъект System.Data.Linq.DataContext, а также SQLMetal.exe.Я создал свой объект контекста данных из метаданных в удаленной базе данных SQL, и код выглядит хорошо (насколько я могу судить - все правильные имена и типы, похоже, присутствуют).

Я хотел добавить это в Silverlight, но после импорта кода я понял, что вы не можете использовать System.Data в приложении Silverlight, что исключает использование этого кода вСам клиент Silverlight.Теперь это раздражает, потому что DataContext довольно удобно поставляется со свойствами, которые являются таблицами и тому подобным (я считаю, что это действительно удобно в Silverlight).

Так что я не могу сделать это «обычным способом».Я могу сделать это с помощью службы WCF, но ... ну, вот где я мог бы воспользоваться некоторыми советами.Я могу создать службу WCF с асинхронными вызовами, но я не совсем уверен, каким образом подключить объект DataContext.Я имею в виду ... Мне нужен доступ к классам в моем приложении Silverlight (для моих сущностей в базе данных) (и я не совсем уверен, как это сделать - помощь будет принята с благодарностью).Затем синхронизировать все это?Ну, я мог бы использовать некоторые предложения.Например, раньше у меня есть открытая коллекция ObservableCollection.В своем геттере он снова заполняется содержимым, например, Context.Customers.Это делало вещи приятными и легкими, но я не вижу способа сделать что-то подобное сейчас.Если бы я делал вызов в асинхронную службу для каждого «получения», это, безусловно, было бы недопустимо медленным.

Если бы вы могли помочь мне разобраться в этом, я был бы благодарен.Спасибо.

Ответы [ 2 ]

1 голос
/ 29 ноября 2011

Вам определенно необходимо прочитать о Entity Framewrok и парах статей об использовании WCF RIA + EF в приложениях Silverlight.

Надеюсь, это поможет вам.

0 голосов
/ 29 ноября 2011

Как упоминалось выше, вы можете пользоваться услугами RIA.

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

Ваш клиент, что бы это ни было (приложение Silverlight, приложение WPF и т. Д.), Должен (и должен только) использовать эти типы доменов. Это часть полного разделения интересов и принципов SOLID. Поскольку я могу гарантировать вам в какой-то момент жизненного цикла приложения, вы обменяете свой источник данных на данные, так что вы можете в конечном итоге использовать Entity Framework или NHibernate, чтобы вместо этого общаться с БД, в этом случае ваш клиент будет трудно подключены к вашим типам LINQtoSQL, и вы не сможете поменять слой ORM, не сломав клиент.

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