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] 属性を使用したくないので使用できないことに注意してください。これは、このメソッドを使用したい場合、すべてのカスタム エンティティ プロパティが相互に関連しておらず、複数ではなく 1 つのサービスを呼び出したいためです。クライアント側でデータをロードするサービス

清聴ありがとうございました

4

1 に答える 1

0

あなたの実装はわかりませんが、通常、Silverlight プロジェクトでは次の手法に従います: Silverlight でのエンティティの共有

于 2013-04-08T12:13:58.540 に答える