Silverlight InvokeOperation实体变为空
这是我的方法:-Silverlight InvokeOperation实体变为空,silverlight,silverlight-4.0,silverlight-3.0,wcf-ria-services,Silverlight,Silverlight 4.0,Silverlight 3.0,Wcf Ria Services,这是我的方法:- [Invoke] public List<FamilyEvent> GetFamilyEvents(int userId) { List<FamilyEvent> familyEvents = new List<FamilyEvent>(); int id = -1; //just to fool ria //this is for birthday reminders.
[Invoke]
public List<FamilyEvent> GetFamilyEvents(int userId)
{
List<FamilyEvent> familyEvents = new List<FamilyEvent>();
int id = -1; //just to fool ria
//this is for birthday reminders.
var qry = ((from member in this.ObjectContext.TreeMembers.Where(m => m.UserId == userId && m.Birthdate == null)
select member.TreeMemberId).Except(from item in this.ObjectContext.FamilyEvents where item.ReminderType ==
FMT.Data.Web.Helpers.Global.FAMILY_EVENTS_REMINDERS.BIRTHDAY_REMINDER
select item.TreeMemberId));
var mainQry = from mainMember in this.ObjectContext.TreeMembers
where qry.Contains(mainMember.TreeMemberId)
select mainMember;
foreach (var item in mainQry)
{
FamilyEvent familyEvent = new FamilyEvent
{
FamilyEventId = id--,
TreeMemberId = item.TreeMemberId,
RelatedTreeMemberId = -1,
ReminderType = FMT.Data.Web.Helpers.Global.FAMILY_EVENTS_REMINDERS.BIRTHDAY_REMINDER
};
familyEvent.TreeMember = item;
familyEvents.Add(familyEvent);
}
//this is for anniversary events
qry = ((from member in this.ObjectContext.TreeMembers.Where(m => m.UserId == userId && m.RelationId == (short)Relations.Partner)
select member.TreeMemberId).Except(from item in this.ObjectContext.FamilyEvents where item.ReminderType == FMT.Data.Web.Helpers.Global.FAMILY_EVENTS_REMINDERS.ANNIVERSARY_REMINDER
select item.TreeMemberId));
mainQry = from mainMember in this.ObjectContext.TreeMembers.Include("RelatedTreeMember")
where qry.Contains(mainMember.TreeMemberId)
select mainMember;
foreach (var item in mainQry)
{
FamilyEvent familyEvent = new FamilyEvent
{
TreeMemberId = item.TreeMemberId,
TreeMember = item,
RelatedTreeMemberId = item.RelatedTreeMemberId,
ReminderType = FMT.Data.Web.Helpers.Global.FAMILY_EVENTS_REMINDERS.ANNIVERSARY_REMINDER
};
familyEvent.RelatedTreeMember = item.RelatedTreeMember;
familyEvents.Add(familyEvent);
}
return familyEvents;
}
[调用]
公共列表GetFamilyEvents(int userId)
{
List familyEvents=新列表();
int id=-1;//只是为了愚弄ria
//这是生日提醒。
var qry=((来自this.ObjectContext.TreeMembers.Where(m=>m.UserId==UserId&&m.Birthdate==null)中的成员)
选择member.TreeMemberId).Exception(来自this.ObjectContext.FamilyEvents中的项,其中item.RememberType==
FMT.Data.Web.Helpers.Global.FAMILY\u事件\u提醒。生日\u提醒
选择item.TreeMemberId);
var mainQry=来自this.ObjectContext.treembers中的main成员
其中qry.Contains(mainMember.TreeMemberId)
选择主要成员;
foreach(主要风险项目)
{
FamilyEvent FamilyEvent=新FamilyEvent
{
FamilyEventId=id--,
TreeMemberId=item.treemberid,
RelatedTreeMemberId=-1,
提醒类型=FMT.Data.Web.Helpers.Global.FAMILY\u事件\u提醒。生日\u提醒
};
familyEvent.TreeMember=项目;
familyEvents.Add(familyEvent);
}
//这是周年纪念活动
qry=((来自this.ObjectContext.TreeMembers.Where中的成员(m=>m.UserId==UserId&&m.RelationId==(短)Relations.Partner)
选择member.TreeMemberId).Exception(从this.ObjectContext.FamilyEvents中的项目,其中item.MemberType==FMT.Data.Web.Helpers.Global.FAMILY\u EVENTS\u Members.Annium\u提醒
选择item.TreeMemberId);
mainQry=this.ObjectContext.TreeMembers.Include(“relatedTreembers”)中的来自main成员
其中qry.Contains(mainMember.TreeMemberId)
选择主要成员;
foreach(主要风险项目)
{
FamilyEvent FamilyEvent=新FamilyEvent
{
TreeMemberId=item.treemberid,
TreeMember=项目,
RelatedTreeMemberId=item.RelatedTreeMberId,
提醒类型=FMT.Data.Web.Helpers.Global.FAMILY\u事件\u提醒。周年纪念\u提醒
};
familyEvent.RelatedTreeMember=项目.RelatedTreeMember;
familyEvents.Add(familyEvent);
}
返回家庭事件;
}
如您所见,我以编程方式填充实体并填充它。当我在返回familyEvents上放置断点时,我可以看到正确的数据。但是在客户端,TreeMember和RelatedTreeMember值变为null。为什么会这样?如果我不使用[Invoke]而使用[Query],它可以工作,但我需要在我的情况下调用。familyEvent对象是POCO还是RIA实体?@Rus:-它是RIA实体。我最终使用了查询而不是调用,但如果您找到了这个解决方案,它将非常棒。我不明白为什么RIA在调用操作中表现得很奇怪。在文档中还提到不要使用Invoke。