Проверьте, существуют ли записи с определенным значением в базе данных с помощью WCF RIA Services - PullRequest
0 голосов
/ 22 ноября 2010

Приложение Silverlight использует службы WCF RIA для подключения к базе данных SQL Server.Прежде чем вставлять в таблицу несколько новых записей, я должен проверить, содержит ли эта таблица какие-либо записи с определенным значением в одном из полей.

Я немного новичок в Silverlight, поэтому мне нужен совет по правильномуподход к обработке служб WCF RIA.

Должен ли я сделать запрос, отфильтровывающий записи по заданному значению, загрузить его, а затем на клиенте проверить, содержит ли он такие записи? Что-то вродеследующий метод в классе обслуживания домена ProductService:

public IQueryable<Product> GetProducts(string nameFilter)
{
   return this.ObjectContext.Products.Where(p => p.Name.StartsWith(nameFilter));
}

Или я должен составить (в классе обслуживания домена) пользовательский метод, который будет выполнять всю проверку на стороне сервера итолько возвращать логическое подтверждение?

Какой подход является более правильным в контексте служб Silverlight WCF RIA?

1 Ответ

1 голос
/ 23 ноября 2010

Сделайте это на сервере и отправляйте только те данные, которые вам действительно нужны, по сети.Хотя, если вы в конечном итоге собираетесь использовать результат, я бы порекомендовал вернуть его в одном и том же вызове, иначе вы делаете два вызова для одной и той же информации.

Именно так мы и поступаем в нашемapplication.

Единственное предостережение, которое я бы добавил, если вы хотите выполнить дорогостоящую фильтрацию данных или расширить набор результатов, может быть более эффективным, чтобы вернуть полный набор иработать в клиенте или если ваш объект данных большой, и вы не используете его более половины времени, тогда повторные вызовы могут фактически быть более эффективными.

Действительно те же правила, что и при "стандартном" программировании веб / баз данныхприменить - вы не хотите делать два (или более) звонка на сервер, где бы вы ни делали, но в равной степени вы не хотите отправлять данные, которые вы не собираетесь использовать.Вы должны будете профилировать свое приложение и увидеть, где есть какие-либо узкие места, и проанализировать код в каждом конкретном случае.

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

...