3

我是 WCF 和实体框架的新手。

DatabaseEntities.edmx我有一个包含(实体框架objectContext)的类库“A” 。

该库公开了一个包含函数的类“B” FunctionB,在内部使用实体对象。

我已将此库“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(); 
}

这工作正常。

但我的问题是:DataContract在 WCF 中是可选的吗?

提前致谢..

4

1 回答 1

10

.NET 3.5 SP1开始- 是的,[DataContract]不再需要。

如果省略它,那么类将像 XML 序列化程序一样被序列化:默认情况下,类上的所有公共属性都将被序列化。

但是:如果您开始[DataContract]在您的类上使用 a 或在您的[DataMember]某个属性上使用 a,那么您必须[DataMember].

所以它要么是:完全忽略这些属性(使用 XML 序列化程序使用的默认行为),要么是特定的并用[DataContract]你想要序列化的每个属性来装饰类[DataMember]。我更喜欢第二种方法。

于 2013-06-02T09:34:05.203 回答