我创建了一个复杂的对象,它本身包含另一个对象的列表。发送自定义复杂对象到Silverlight RIA服务
例子:
public class MyClass1
{
private List<MyClass2> myClass2List
[Key]
public long Id { get; set; }
public string Name { get; set; }
[Include]
[Association("FK_MyClass1_MyClass2", "Id", "MyClass1Id")]
public List<MyClass2> MyClass2List
{
get
{
if (this.myClass2List == null)
{
this.myClass2List = new List<MyClass2>();
}
return this.myClass2List;
}
set { this.myClass2List = value; }
}
}
public class MyClass2
{
[Key]
public long Id { get; set; }
public string Value { get; set; }
public long MyClass1Id { get; set; }
}
现在我想给MyClass1的(其中其MyClass2List已满)的实例向RIA服务。
我的第一次尝试是创建一个MyClass1返回类型的get方法(以公开MyClass1),并为MyClass1和MyClass2创建一个Insert方法。它的作品,但MyClass2插入方法是没用的!我在MyClass1方法中插入所有信息。 get方法也没用!
这是工程领域的服务:
[EnableClientAccess]
public class MyDomainService : DomainService
{
public MyClass1 GetMyClass1()
{
return null;
}
[Insert]
public void Insert(MyClass1 myClass1)
{
... (Main code)
}
[Insert]
public void Insert(MyClass2 myClass2)
{
// I leave this method empty because I do the job in MyClass1 Insert method.
// If I don't add this method the Add operation on MyClass2List will not work!
}
}
正如你看到它并没有一个明确的执行。尽管我可以使用传统的启用WCF Silverlight的服务,并且只需使用一种方法插入MyClass1实例。
请注意,我尝试了[Invoke]方法(一个简单的调用方法,它将MyClass1作为输入参数),但是“MyClass1.MyClass2List”为空!
如何将一个复杂的对象发送到RIA服务而没有这种无用的方法和脏实现?我需要用一种方法来完成我所有的作品。我不需要在这里跟踪等。使用RIA之外的传统WCF服务更好吗?还是有另一种关于RIA的方式?
在此先感谢
关于“创造与MyClass1的返回类型的查询方法”,任何RIA查询假设一个IEnumerable或IQueryable的返回类型。它不支持返回单个对象的概念。 –
但它的工作方式与我使用的方式完全相同! –
对不起,你的回复没有意义。你说过“get方法也没用!”以及声明您试图从查询中返回单个值。我正在评论为什么这不起作用。 –