我是WCF的新手。我正在尝试通过使用实体框架创建具有LINQ结果的列表。我想返回JSON数据。但我无法得到它。我收到类似Notsupportedexception未由用户代码处理的错误。请帮我解决这个问题。提前致谢。
这是我的服务构造函数:
[OperationContract]
[WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "getcontact")]
List<string> JSONDataAll();
如果我这样返回它的工作正常:
public List<String> JSONDataAll()
{
var users = (from u in db.Tbl_Users select u).ToList();
var finalList= users.Select(u => u.UserName).ToList();
return st;
}
在这种情况下,其显示错误:
public List<String> JSONDataAll()
{
var users = (from u in db.Tbl_Users
select new
{ u.UserName,
u.UserAddress
}).ToList();
return users;
}
由于使用的是WCF,因此要进行投影(选择子句),可以创建新类型作为返回类型,而不是匿名对象或派生对象,并且EF实体不能用于投影。
根据localhost.com
讨论,派生的对象可能会引起问题,可能是无效的properprty值。您还可以享受通过DataMember
属性配置它的好处。
[DataContract]
public class UserDataResponse
{
[DataMember]
public string UserName { get; set; }
[DataMember]
public string UserAddress { get; set; }
}
并更改WCF操作的返回类型。
public List<UserDataResponse> JSONDataAll()
{
var users = (from u in db.Tbl_Users
select new UserDataResponse
{
UserName = u.UserName,
UserAddress = u.UserAddress
});
return users.ToList();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句