3

私はWCFとエンティティフレームワークが初めてです。

DatabaseEntities.edmx(Entity Framework )を含むクラスライブラリ「A」がありますobjectContext

FunctionBこのライブラリは、エンティティ オブジェクトを内部的に使用して、関数を含むクラス "B" を公開しています。

このライブラリ "A" 参照を WCF Web サービスと内部に取り込みましたIService.cs。次のようにコーディングしました。

[OperationContract]
void FunctionB_Proxy();

何も定義せずに、以下のようにこの関数DataContractに入って実装しました。Service1.cs

public void FunctionB_Proxy()
{
  ClassB x=new ClassB();//Class of ClassLibrary
  x.FunctionB(); 
}

これはうまくいきます。

しかし、私の質問: DataContractWCF ではオプションですか?

前もって感謝します..

4

1 に答える 1

10

.NET 3.5 SP1 以降- はい、不要[DataContract]になりました。

これを省略すると、クラスは XML シリアライザーと同様にシリアライズされます。クラスのすべてのパブリック プロパティはデフォルトでシリアライズされます。

ただし[DataContract]、クラスまたは[DataMember]プロパティの 1 つで を使用し始める場合は、シリアル化するすべてのプロパティを でデコレートする必要[DataMember]があります。

したがって、これらの属性を完全に除外する (XML シリアライザーが使用するようなデフォルトの動作を使用する) か、具体的に[DataContract]して、シリアル化する必要のあるすべてのプロパティでクラスを装飾します[DataMember]。私はこの2番目のアプローチを好みます。

于 2013-06-02T09:34:05.203 に答える