我是 WCF 和 Entity Framework 的新手。
我有一个类库“A”,其中包含 DatabaseEntities.edmx
( Entity Framework objectContext
)。
这个库公开了一个类“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 中是可选的吗?
提前谢谢..
最佳答案
从 .NET 3.5 SP1 开始 - 是的,不再需要 [DataContract]
。
如果你省略它,那么类将像 XML 序列化器一样被序列化:你的类上的所有公共(public)属性都将默认被序列化。
但是:如果您开始在您的类上使用 [DataContract]
或在您的某个属性上使用 [DataMember]
,那么您必须 用 [DataMember]
装饰你想要序列化的所有属性。
因此,要么:完全忽略这些属性(使用 XML 序列化程序使用的默认行为),要么具体化并使用 [DataContract]
和您想要的每个属性来装饰类用 [DataMember]
序列化。我更喜欢第二种方法。
关于wcf - Entity Framework 数据合约,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16881450/