ハウディー、よろしく! StackOverflowの最初の質問! :-)WCF RIAサービスの呼び出しメソッドのパラメータとしてエンティティを使用する代わりの方法
これはシナリオです:私たちはSilverlight 4でWebアプリケーションを開発しており、WebサービスにはWCF RIA Services 1.0 SP1 Betaを使用しています。私はエンティティフレームワークデザイナーで自分のエンティティを持っていますが、私はわずかに変更されたADO.NETのC#POCOエンティティジェネレータのテンプレートを使用してクラスを生成しています。私がやりたいのは何
は、以下の署名でドメインサービス内のメソッドを持っている:
[EnableClientAccess]
public class ResultService : DomainService
{
[Invoke]
public SerializableResult CalculateResult(EntityOne e1, EntityTwo e2);
}
私はそうのように、他のサービス内のクエリを介してクライアントにEntityOneとEntityTwoの両方を返しています:
[EnableClientAccess]
public class EntityOneService : DomainService
{
public IQueryable<EntityOne> GetEntityOnes();
}
[EnableClientAccess]
public class EntityOneService : DomainService
{
public IQueryable<EntityTwo> GetEntityTwos();
}
これらのクラスはが正常にSilverlightのプロジェクトで生成されています。 SerializableResultはではなく、にキーがあります。
コンパイルしようとすると、「CalculateResult」という名前の操作が必要なシグネチャに準拠していません。パラメータ型は、エンティティまたは複合型、複合型のコレクション、またはあらかじめ定義されたシリアライズ可能なタイプ "
私の研究では、私が見つけた最も有用な情報はthis post by Jeff Handleyのコメントにありました。注目すべきは
は、ピーターはコメントで尋ねた:
I get an 'does not conform to the required signature ...' compile error if my complex object has an [Key] Attribute. When I remove this attribute I can use the object as parameter for an Invoke operation.
ジェフの応答:任意のさらなる努力が無駄になります動作するように私の方法を取得しようとするかのように
This is by design. Complex objects cannot have Key properties. If you have a Key the class gets treated as an Entity.
だから、それは聞こえるが。しかし、誰かがこの問題を抱えているのか、それを解決するために何をしたのだろうと私は思っていました。
ありがとうございました!
クライアントでSerializableResultが生成されていますか?これが私たちのComplex Type IDのバグかどうか疑問に思っています.SequentializableResult型をエンティティのプロパティとして浮上させてからInvokeの結果として使用する必要があるかもしれません。 –
私が試してみると、 "[Invoke] public SerializableResult CalculateResult();"、クライアントでSerializableResult _is_が生成されました。 –
それからエンティティの形をしたもののように聞こえます。 EntityOneとEntityTwoはエンティティから派生して生成されますか? –