实体框架数据合同

时间:2013-06-02 09:26:41

标签: wcf entity-framework-4.1

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

我有一个类库“A”,其中包含DatabaseEntities.edmx(实体框架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(); 
}

这很好用。

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

提前致谢..

1 个答案:

答案 0 :(得分:10)

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

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

但是:如果您开始在您的课程上使用[DataContract]或在您的某个媒体上使用[DataMember],那么您必须装饰您想要序列化的所有媒体资源[DataMember]

所以它要么:完全省略这些属性(使用XML序列化程序使用的默认行为),要么具体并使用[DataContract]装饰类,并使用{{1来序列化每个属性}}。我更喜欢第二种方法。