0

我有一个应用程序使用实体框架5和POCO类使用代码优先的方法。实体框架5与n层架构

这样,我有一个波科类建模,这样的方式我可以在模型(而不是EDMX东西)更好地控制每一个数据库表。

应用程序工作正常,但现在我想添加一个WCF层,所以它的工作原理n层体系结构下。

这样做的最佳方法是什么?

我很熟悉WCF,但与ADO.NET数据集返回。我正在阅读,为了获得最佳性能,您可以返回JSON而不是XML,所以想从专家那里了解是否有任何示例可以查看如何使用实体框架实现WCF层,该实体框架将JSON对象返回给客户端,反之亦然。

感谢和欣赏任何指导。

回答

1

如果您创建自定义类或使用实体框架类,则不存在此类更改。只有您必须将[DataContract]放在需要序列化的类的上面,而[DataMember]需要在该服务中序列化。

对于如。

[DataContract] 
public class Test 
{ 
    [DataMember] 
    public string field1 {get; set;} 

    [DataMember] 
    public string field2 {get; set;} 
} 

并创建WCF服务,您只需要把下面的代码:

它会在服务接口,你只需要在类中实现。

[OperationContract] 
    [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)] 
    List<test> GetTest(); 

我希望它能帮助你。 :)

+0

谢谢,这样我就可以有一个单独的Project.Models和参考,在我的客户和我的WCF服务项目,只是添加datacontract和DataMember在每一个将被序列正确的属性? – VAAA

+0

大其工作细..现在我只是呼吁在客户端上的WCF方法我有当有一个问题: Model.User用户= clientWCF.ValidateUser(“测试”,“测试”); 如果我运行,我得到一个错误,因为用户对象类型是不同于Model.User,是奇怪的,因为是引用相同的模型。如果我使用: var user = clientWCF.ValidateUser(“test”,“test”);我可以看到里面有什么。 – VAAA

+0

您可以共享该服务的代码,并分享model.user。所以我可以纠正这个问题。 :) –