我创建了一个消息对象,其中包含三个属性,这三个属性是三个不同实体类型的列表。我创建了消息类,因为我正在尝试进行所有将返回符合搜索条件的所有实体的搜索。我想在一次通话中这样做,而不是三次(每个实体一次)单独的通话。它编译并且客户端设计者生成实体,服务的Search All方法,消息对象类,但不生成消息对象属性。 这可能与RIA服务有关吗?如果是这样,你能解释我做错了什么以及为什么?谢谢!
服务器端类声明:
[Serializable]
[DataContract(IsReference = true)]
public class SearchAllMessage
{
[DataMember]
public List<Entity1> Entity1List { get; set; }
[DataMember]
public List<Entity2> Entity2List { get; set; }
[DataMember]
public List<Entity3> Entity3List { get; set; }
}
客户端设计人员生成代码:
/// <summary>
/// The 'SearchAllMessage' class.
/// </summary>
[DataContract(Namespace="http://schemas.datacontract.org/2004/07/SharebackMaintenance.RiaService.Web")]
public sealed partial class SearchAllMessage : ComplexObject
{
#region Extensibility Method Definitions
/// <summary>
/// This method is invoked from the constructor once initialization is complete and
/// can be used for further object setup.
/// </summary>
partial void OnCreated();
#endregion
/// <summary>
/// Initializes a new instance of the <see cref="SearchAllMessage"/> class.
/// </summary>
public SearchAllMessage()
{
this.OnCreated();
}
}
服务的方法签名:
[Invoke]
public SearchAllMessage SearchAll(string fiterA, string filterB, int filterC)
答案 0 :(得分:0)
假设您的SearchAllMessage
及其包含的项目是只读的,您应将其标记为ComplexType
。您所要做的就是为所涉及的每个类添加一个属性(SearchAllMessage
,Entity1
等。)
[Serializable]
[DataContract(IsReference = true)]
[ComplexType]
public class SearchAllMessage
{
[DataMember]
public List<Entity1> Entity1List { get; set; }
[DataMember]
public List<Entity2> Entity2List { get; set; }
[DataMember]
public List<Entity3> Entity3List { get; set; }
}
ComplexTypeAttribute
是EntityFramework
程序集的成员。
如果您打算让实体可查询和可更新,那么您需要沿着使用[Association(...)]
,[Include]
和[Composition]
的路径前进。