Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wcf RIA服务EF使用实体列表作为属性创建MessageObject_Wcf_Entity Framework_Wcf Ria Services - Fatal编程技术网

Wcf RIA服务EF使用实体列表作为属性创建MessageObject

Wcf RIA服务EF使用实体列表作为属性创建MessageObject,wcf,entity-framework,wcf-ria-services,Wcf,Entity Framework,Wcf Ria Services,我创建了一个具有三个属性的消息对象,这三个属性是三种不同实体类型的三个列表。我创建message类是因为我正在尝试执行一个搜索all,它将返回符合搜索条件的所有实体。我希望在一次调用中完成此操作,而不是三次(每个实体一次)单独调用。它进行编译,客户端设计器生成实体、服务的Search All方法、消息对象类,但不生成消息对象属性。 RIA服务是否可以做到这一点?如果是这样,你能解释我做错了什么,为什么?谢谢 服务器端类声明: [Serializable] [DataContract(IsRefe

我创建了一个具有三个属性的消息对象,这三个属性是三种不同实体类型的三个列表。我创建message类是因为我正在尝试执行一个搜索all,它将返回符合搜索条件的所有实体。我希望在一次调用中完成此操作,而不是三次(每个实体一次)单独调用。它进行编译,客户端设计器生成实体、服务的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; }
}

假设您的
SearchAllMessage
及其包含的项目是只读的,您应该将其标记为
ComplexType
。您所要做的就是为涉及的每个类添加一个属性(
SearchAllMessage
Entity1
,等等)

[可序列化]
[DataContract(IsReference=true)]
[复合类型]
公共类SearchAllMessage
{
[数据成员]
公共列表Entity1List{get;set;}
[数据成员]
公共列表Entity2List{get;set;}
[数据成员]
公共列表Entity3List{get;set;}
}
ComplexTypeAttribute
EntityFramework
程序集的成员


如果您打算使实体可查询和更新,那么您需要继续使用
[关联(…)]
[包含]
、和
[组合]

感谢您的帮助!我将[ComplexTypeAttribute]添加到类中,现在在我看到的客户端生成的文件中“-属性”System.ComponentModel.DataAnnotations.ComplexTypeAttribute”在客户端项目“MyProject.RiaService”中不可见。是否缺少程序集引用?我找不到任何具有ComplexTypeAttribute类的Silverlight 4 dll。您知道什么Silverlight 4 dll具有该属性吗?我是否也需要将此类添加到MyDomainService.metadata.cs文件中?顺便说一句,我有WCF RIA Servics V1.0 SP2策略,该属性位于EntityFramework DLL中。到目前为止,我一直认为它来自System.ComponentModel.DataAnnotations或WCF RIA程序集。
/// <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)
[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; }
}