继承ria服务形式“DomainService”和“LinqToEntitiesDomainService<>”

时间:2013-04-08 05:57:08

标签: .net silverlight wcf-ria-services

我有一段这样的代码:

namespace SilverlightApplication1.Web
{
    [DataContractAttribute(IsReference = true)]
    public class CustomEntity 
    {
        [DataMemberAttribute()]
        public Person MyPerson { get; set; }

        [DataMemberAttribute()]
        public Address MyAddress { get; set; }

        [DataMemberAttribute()]
        public List<Order> MyOreders { get; set; }

    }
}

就像某些ef实体的包装器一样。问题是当我编写一个服务来为Silverlight客户端公开这个类时:

[EnableClientAccess]
public class DomainService2 : DomainServices
{
    [Invoke]
    public IEnumerable<CustomEntity> GetAllCustomEntities()
    {
        var ent = new AllDataBaseEntities();
        return ent.Persons.Select(x => new CustomEntity()
        {
            MyPerson= x,
            MyAddrees= x.Address,
            MyOrders=x.Orders.ToList()

        });
    }

如果我从“DomainService”继承并编写如上所述的代码,那么我的所有CustomEntity属性都会在客户端公开。否则,如果我写这样的服务:

[EnableClientAccess()] 
public class DomainService1 : LinqToEntitiesDomainService<AllDataBaseEntities> {

        public IEnumerable<CustomEntity> GetAllCustomEntities()
        {
            return ObjectContext.Persons.Select(x => new CustomEntity()
            {
                MyPerson= x,
                MyAddrees= x.Address,
                MyOrders=x.Orders.ToList()

            });
        }

}

我的CustomEntity属性都没有在客户端提供。

我的问题是如何在我的程序中使用这两种方法。如果我在程序中使用“LinqToEntitiesDomainService&lt;&gt;”,那么另一种方法无效。

请注意我不想要,我不能使用[Association]属性,因为对于我想要使用此方法的内容,所有自定义实体属性彼此之间没有关系,我想调用一个服务而不是在客户端加载我的数据的多个服务

感谢您的关注

1 个答案:

答案 0 :(得分:0)

我不知道你的实现,但通常在我的Silverlight项目中我遵循这种技术:Sharing Entities in Silverlight