【问题标题】:Entity framework data contract实体框架数据合约
【发布时间】:2013-06-02 09:26:40
【问题描述】:

我是 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 中是可选的吗?

提前谢谢..

【问题讨论】:

    标签: wcf entity-framework-4.1


    【解决方案1】:

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

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

    但是:如果您开始在您的类上使用[DataContract] 或在您的某个属性上使用[DataMember],那么您必须使用[DataMember] 装饰所有要序列化的属性。

    因此,要么:完全忽略这些属性(使用 XML 序列化程序使用的默认行为),要么具体化并使用 [DataContract] 装饰类,并使用 [DataMember] 序列化每个属性。我更喜欢第二种方法。

    【讨论】:

    • 看起来非常令人印象深刻,感谢您提供如此宝贵的答案。我也更喜欢您建议的路线,但是要这样做,我必须自己为 ORM 编写代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多