В настоящее время я работаю над проектом, использующим как Entity Framework (версия, поставляемую с .NET Framework версии 3.5 с пакетом обновления 1), так и множество функциональных возможностей на основе AJAX, которые я реализую с помощью jQuery на стороне клиента и ASP. NET WebMethods на стороне сервера.
Обычно я создаю новые сущности, используя WebMethod, который принимает сущность в качестве параметра следующим образом:
[WebMethod]
public static void Add(User user);
При вызове этого метода я собираю объект, напоминающий сущность (с точки зрения свойств) в JavaScript, и передаю его в виде строки JSON. Однако при попытке передать связанные сущности в отношении «многие ко многим» я столкнулся с проблемой. Скажем, объект «Пользователь» имеет отношение «один ко многим» с объектом «Полет» - добавление нового пользователя с несколькими (новыми) рейсами оказывается проблематичным. Следующий подход:
this.user.Flight = [];
var x = new Object();
// Code here to populate x's properties
this.user.Flight.push(x);
// Repeat again for more flights
В результате возникает ошибка ASP.NET (на этапе десериализации), в которой говорится, что List нельзя преобразовать в EntityCollection.
Затем я попробовал этот подход:
this.user.Flight = {};
var x = new Object();
// Code here to populate x's properties
this.user.Flight.firstFlight = x;
// Repeat again for more flights
В этом случае WebMethod был успешно вызван, но полеты были потеряны полностью (вызов user.Flight.Count () в WebMethod вернул 0).
Кто-нибудь знает, как я могу передать несколько рейсов в EntityCollection в WebMethod?