0

我有这样的代码:

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<>”,那么另一种方法不能正常工作。

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

感谢您的关注

4

1 回答 1

0

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

于 2013-04-08T12:13:58.540 回答