我是WCF的新手。我正在尝试使用Entity Framework创建具有LINQ结果的List。我想返回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;
}
答案 0 :(得分:0)
由于您正在使用WCF,要进行投影(select子句),您可以创建一个新类型作为返回类型而不是匿名对象或派生对象,并且EF实体不能用于进行投影。
派生对象可能会在讨论中导致localhost.com
问题,可能存在无效的proeprty值。您还可以benefits使用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();
}