我正在開發一個Silverlight業務應用程序,它使用返回POCO實體(TaskTime和User)的RIA服務。 TaskTime實體具有與其關聯的用戶實體。基於POCO實體的RIA服務無法對關聯實體進行反序列化
我創建了一個具有查詢功能(GetTimesheet)的域服務,該服務返回TaskTime實體的IQueryable集合,如果我不嘗試獲取關聯的用戶實體,它也可以正常工作,但只要我在'TaskTime'實體的'User'屬性上面包含[Include]和[Association]屬性,我開始得到反序列化錯誤:
格式化程序在嘗試反序列化消息時拋出異常[ InnerException消息是'Error in line 1 position 266. Element'http://schemas.microsoft.com/2003/10/Serilaization/Arrays:anyType'contaings data of the'http://schemas.datacontract.org/2004 /07/Timesheets.Entities:User'data contract。反序列化器不知道映射到此合約的任何類型。將相應的「用戶」添加到已知類型的列表中...'
它表明我使用'KnownTypes'屬性,但似乎找不到解決此錯誤的地方。
有沒有人有任何線索如何解決這個問題?我可以在我的Silverlight應用程序的「Generated_Code」這兩種類型似乎是正確創建,與DataContract屬性增加等..看到
我的POCO實體的簡化版本是:
public partial class TaskTime
{
[Key()]
public virtual int ID { get; set; }
public virtual int User_ID { get; set; }
[Include]
[Association("TaskTime_User", "User_ID", "ID", IsForeignKey=true)]
public virtual User User
{
get { return _user; }
set
{
if (!ReferenceEquals(_user, value))
{
var previousValue = _user;
_user = value;
FixupUser(previousValue);
}
}
}
}
public partial class User
{
[Key()]
public virtual int ID { get; set; }
public virtual string Name { get; set; }
}
約翰 - 我有你的確切問題,你介意分享你的解決方法嗎? – 2011-03-14 15:08:20
@Zein:如果您有問題並且提供的解決方案對您無效,您應該提出一個新問題並將其作爲參考。答案僅用於解決問題。 – 2011-03-14 15:16:13