我目前正在开发一个项目,该项目同时使用 Entity Framework(与 .NET Framework 3.5 SP1 版本一起打包的版本)和许多基于 AJAX 的功能,我在客户端使用 jQuery 和 ASP.NET WebMethods 来实现这些功能服务器端。
我通常使用接受实体作为参数的 WebMethod 创建新实体,如下所示:
[WebMethod]
public static void Add(User user);
调用此方法时,我在 JavaScript 中组装类似于实体(就属性而言)的对象,并将其作为 JSON 字符串传递。但是,当尝试以多对多关系传递相关实体时,我遇到了问题。假设 User 实体与 Flight 实体具有一对多的关系 - 添加具有多个(新)航班的新用户被证明是有问题的。以下方法:
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 被成功调用,但航班完全丢失(在 WebMethod 中调用 user.Flight.Count() 返回 0)。
有谁知道如何将 EntityCollection 中的多个航班传递给 WebMethod?