我创建了一个复杂的对象,它本身包含另一个对象的列表。
例子:
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 Insert 方法没用!我在 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-Enabled 服务,并且只需使用一个方法来插入 MyClass1 实例。
请注意,我尝试了 [Invoke] 方法(一个简单的调用方法,将 MyClass1 作为输入参数)但是“MyClass1.MyClass2List”为空!!!
如何在没有这种无用方法和肮脏实现的情况下将复杂对象发送到 RIA 服务?我需要用一种方法完成我所有的工作。我在这里不需要跟踪等。除了 RIA 之外,使用传统的 WCF 服务是否更好,或者 RIA 还有其他方式吗?
提前致谢