我想从我的wcf服务返回一个自定义类。我的代码在下面,出现错误。WCF数据表关系
服务器在处理请求时遇到错误。异常消息是'DealerModel'类型的属性'UserList'不是有效的属性。不支持其类型为原始类型或复杂类型集合的属性。'。查看服务器日志获取更多详细信异常栈跟踪是:
我想要得到像下面这样的json值;
<Dealer>
<DealerName/>
<DealerAdress/>
<Users>
<FirstName/>
<LastName/>
<FirstName/>
<LastName/>
</Users>
</Dealer>
我的代码
using System;
using System.Linq;
using System.Data.Objects;
using System.Data.Objects.DataClasses;
public class DataModel:IDisposable
{
private xModel.xEntities _dbContext = new xSocialModel.xEntities();
public DataModel()
{
Users = from e in _dbContext.Users
select new UserModel
{
UserID = e.UserID,
Firstname = e.Firstname,
Lastname = e.Lastname
};
Dealers = from e in _dbContext.Dealers
select new DealerModel
{
DealerID = e.DealerID,
DealerName = e.Name,
DealerAddress = e.Address,
UserList = e.Users
};
}
/// <summary>Returns the list of users.</summary>
public IQueryable<UserModel> Users { get; private set; }
public IQueryable<DealerModel> Dealers { get; private set; }
void IDisposable.Dispose()
{
_dbContext.Dispose();
}
}
using System;
using System.Data.Services.Common;
using System.Runtime.Serialization;
using System.Collections.Generic;
using System.ServiceModel;
using System.Data.Objects.DataClasses;
using System.Linq;
/// <summary>Represents a User.</summary>
[DataServiceKey("UserID")]
public class UserModel
{
public Guid UserID { get; set; }
public string Firstname { get; set; }
public string Lastname { get; set; }
}
[DataServiceKey("DealerID")]
public class DealerModel
{
public Guid DealerID { get; set; }
public string DealerName { get; set; }
public string DealerAddress { get; set; }
**public EntityCollection<xModel.User> UserList { get; set; }**
}
非常感谢您的回答。是的,我正在使用实体框架。我已经尝试过复杂的类型,但没有运气。只有像int,字符串等基本类型我必须用属性填充我的列表:(.sql关系返回一个实体集合是e.user,但我无法弄清楚如何使用并显示它 – 2012-07-30 14:18:32
你的用户对象是什么包含,当你收到你的用户对象时,是否有可能创建第二个回调服务器? – muck41 2012-07-30 14:26:40
或者你是否考虑过在你的OData查询中使用$ expand调用?如果你的实体之间有相互关系,想想你的问题的外观 – muck41 2012-07-30 14:28:02